{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "604f779b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "        <script type=\"text/javascript\">\n",
       "        window.PlotlyConfig = {MathJaxConfig: 'local'};\n",
       "        if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n",
       "        if (typeof require !== 'undefined') {\n",
       "        require.undef(\"plotly\");\n",
       "        requirejs.config({\n",
       "            paths: {\n",
       "                'plotly': ['https://cdn.plot.ly/plotly-latest.min']\n",
       "            }\n",
       "        });\n",
       "        require(['plotly'], function(Plotly) {\n",
       "            window._Plotly = Plotly;\n",
       "        });\n",
       "        }\n",
       "        </script>\n",
       "        "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from flask import Flask, render_template, request\n",
    "import pandas as pd\n",
    "import cufflinks as cf\n",
    "import plotly as py\n",
    "import plotly.graph_objs as go\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "bb67a874",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "df_or = pd.read_csv('datas/titanic/titanic_train.csv', encoding='utf-8')\n",
    "df_test = pd.read_csv('datas/titanic/titanic_test.csv', encoding='utf-8')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93d782f4",
   "metadata": {},
   "source": [
    "### 数据基本概况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5dc40c0c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Montvila, Rev. Juozas</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211536</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Graham, Miss. Margaret Edith</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>112053</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>W./C. 6607</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Behr, Mr. Karl Howell</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>111369</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>370376</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "0              1         0       3   \n",
       "1              2         1       1   \n",
       "2              3         1       3   \n",
       "3              4         1       1   \n",
       "4              5         0       3   \n",
       "..           ...       ...     ...   \n",
       "886          887         0       2   \n",
       "887          888         1       1   \n",
       "888          889         0       3   \n",
       "889          890         1       1   \n",
       "890          891         0       3   \n",
       "\n",
       "                                                  Name     Sex   Age  SibSp  \\\n",
       "0                              Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                               Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                             Allen, Mr. William Henry    male  35.0      0   \n",
       "..                                                 ...     ...   ...    ...   \n",
       "886                              Montvila, Rev. Juozas    male  27.0      0   \n",
       "887                       Graham, Miss. Margaret Edith  female  19.0      0   \n",
       "888           Johnston, Miss. Catherine Helen \"Carrie\"  female   NaN      1   \n",
       "889                              Behr, Mr. Karl Howell    male  26.0      0   \n",
       "890                                Dooley, Mr. Patrick    male  32.0      0   \n",
       "\n",
       "     Parch            Ticket     Fare Cabin Embarked  \n",
       "0        0         A/5 21171   7.2500   NaN        S  \n",
       "1        0          PC 17599  71.2833   C85        C  \n",
       "2        0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3        0            113803  53.1000  C123        S  \n",
       "4        0            373450   8.0500   NaN        S  \n",
       "..     ...               ...      ...   ...      ...  \n",
       "886      0            211536  13.0000   NaN        S  \n",
       "887      0            112053  30.0000   B42        S  \n",
       "888      2        W./C. 6607  23.4500   NaN        S  \n",
       "889      0            111369  30.0000  C148        C  \n",
       "890      0            370376   7.7500   NaN        Q  \n",
       "\n",
       "[891 rows x 12 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_or"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "abb0d953",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_or.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5f32a6d3",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "# 查看数据类型\n",
    "df_or.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4f3b6e8b",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Cabin Embarked\n",
       "0           0       3    male  22.0      1      0   7.2500   NaN        S\n",
       "1           1       1  female  38.0      1      0  71.2833   C85        C\n",
       "2           1       3  female  26.0      0      0   7.9250   NaN        S\n",
       "3           1       1  female  35.0      1      0  53.1000  C123        S\n",
       "4           0       3    male  35.0      0      0   8.0500   NaN        S\n",
       "..        ...     ...     ...   ...    ...    ...      ...   ...      ...\n",
       "886         0       2    male  27.0      0      0  13.0000   NaN        S\n",
       "887         1       1  female  19.0      0      0  30.0000   B42        S\n",
       "888         0       3  female   NaN      1      2  23.4500   NaN        S\n",
       "889         1       1    male  26.0      0      0  30.0000  C148        C\n",
       "890         0       3    male  32.0      0      0   7.7500   NaN        Q\n",
       "\n",
       "[891 rows x 9 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除不利用数据\n",
    "df_on = df_or.drop(['PassengerId','Name','Ticket'], axis = 1)\n",
    "df_on"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ddbf6580",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "342\n",
      "549\n",
      "0.6229508196721312\n"
     ]
    }
   ],
   "source": [
    "# 生还状况\n",
    "tsn = df_on['Survived'].sum()\n",
    "print(tsn)\n",
    "tnsn = 891 - tsn\n",
    "print(tnsn)\n",
    "# print \"生还者 %d 人，%d 人未生还\" % (tsn,tnsn)\n",
    "print(tsn/tnsn)\n",
    "cal = tsn/tnsn"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10068cbb",
   "metadata": {},
   "source": [
    "### 数据清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7c8131b7",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>54.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>E46</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>16.7000</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>58.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>C103</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>52.5542</td>\n",
       "      <td>D35</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>872</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>B51 B53 B55</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>56.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>83.1583</td>\n",
       "      <td>C50</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>183 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare        Cabin  \\\n",
       "1           1       1  female  38.0      1      0  71.2833          C85   \n",
       "3           1       1  female  35.0      1      0  53.1000         C123   \n",
       "6           0       1    male  54.0      0      0  51.8625          E46   \n",
       "10          1       3  female   4.0      1      1  16.7000           G6   \n",
       "11          1       1  female  58.0      0      0  26.5500         C103   \n",
       "..        ...     ...     ...   ...    ...    ...      ...          ...   \n",
       "871         1       1  female  47.0      1      1  52.5542          D35   \n",
       "872         0       1    male  33.0      0      0   5.0000  B51 B53 B55   \n",
       "879         1       1  female  56.0      0      1  83.1583          C50   \n",
       "887         1       1  female  19.0      0      0  30.0000          B42   \n",
       "889         1       1    male  26.0      0      0  30.0000         C148   \n",
       "\n",
       "    Embarked  \n",
       "1          C  \n",
       "3          S  \n",
       "6          S  \n",
       "10         S  \n",
       "11         S  \n",
       "..       ...  \n",
       "871        S  \n",
       "872        S  \n",
       "879        C  \n",
       "887        S  \n",
       "889        C  \n",
       "\n",
       "[183 rows x 9 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 去除包含NaN的行\n",
    "df1 = df_on.dropna(axis=0,how='any')\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ee9b6c56",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[38.0,\n",
       " 35.0,\n",
       " 54.0,\n",
       " 4.0,\n",
       " 58.0,\n",
       " 34.0,\n",
       " 28.0,\n",
       " 19.0,\n",
       " 49.0,\n",
       " 65.0,\n",
       " 45.0,\n",
       " 29.0,\n",
       " 25.0,\n",
       " 23.0,\n",
       " 46.0,\n",
       " 71.0,\n",
       " 23.0,\n",
       " 21.0,\n",
       " 47.0,\n",
       " 24.0,\n",
       " 32.5,\n",
       " 54.0,\n",
       " 19.0,\n",
       " 37.0,\n",
       " 24.0,\n",
       " 36.5,\n",
       " 22.0,\n",
       " 61.0,\n",
       " 56.0,\n",
       " 50.0,\n",
       " 1.0,\n",
       " 3.0,\n",
       " 44.0,\n",
       " 58.0,\n",
       " 2.0,\n",
       " 40.0,\n",
       " 31.0,\n",
       " 32.0,\n",
       " 38.0,\n",
       " 35.0,\n",
       " 44.0,\n",
       " 37.0,\n",
       " 29.0,\n",
       " 62.0,\n",
       " 30.0,\n",
       " 52.0,\n",
       " 40.0,\n",
       " 58.0,\n",
       " 35.0,\n",
       " 37.0,\n",
       " 63.0,\n",
       " 19.0,\n",
       " 36.0,\n",
       " 2.0,\n",
       " 50.0,\n",
       " 0.92,\n",
       " 17.0,\n",
       " 30.0,\n",
       " 24.0,\n",
       " 18.0,\n",
       " 31.0,\n",
       " 40.0,\n",
       " 36.0,\n",
       " 36.0,\n",
       " 16.0,\n",
       " 45.5,\n",
       " 38.0,\n",
       " 29.0,\n",
       " 41.0,\n",
       " 45.0,\n",
       " 2.0,\n",
       " 24.0,\n",
       " 24.0,\n",
       " 22.0,\n",
       " 60.0,\n",
       " 24.0,\n",
       " 25.0,\n",
       " 27.0,\n",
       " 36.0,\n",
       " 23.0,\n",
       " 24.0,\n",
       " 33.0,\n",
       " 32.0,\n",
       " 28.0,\n",
       " 50.0,\n",
       " 14.0,\n",
       " 64.0,\n",
       " 4.0,\n",
       " 52.0,\n",
       " 30.0,\n",
       " 49.0,\n",
       " 65.0,\n",
       " 48.0,\n",
       " 47.0,\n",
       " 23.0,\n",
       " 25.0,\n",
       " 35.0,\n",
       " 58.0,\n",
       " 55.0,\n",
       " 54.0,\n",
       " 25.0,\n",
       " 16.0,\n",
       " 18.0,\n",
       " 36.0,\n",
       " 47.0,\n",
       " 34.0,\n",
       " 30.0,\n",
       " 44.0,\n",
       " 45.0,\n",
       " 22.0,\n",
       " 36.0,\n",
       " 50.0,\n",
       " 17.0,\n",
       " 48.0,\n",
       " 39.0,\n",
       " 53.0,\n",
       " 36.0,\n",
       " 39.0,\n",
       " 39.0,\n",
       " 36.0,\n",
       " 18.0,\n",
       " 60.0,\n",
       " 52.0,\n",
       " 49.0,\n",
       " 40.0,\n",
       " 4.0,\n",
       " 42.0,\n",
       " 61.0,\n",
       " 21.0,\n",
       " 80.0,\n",
       " 32.0,\n",
       " 24.0,\n",
       " 48.0,\n",
       " 56.0,\n",
       " 58.0,\n",
       " 47.0,\n",
       " 31.0,\n",
       " 36.0,\n",
       " 27.0,\n",
       " 15.0,\n",
       " 31.0,\n",
       " 49.0,\n",
       " 42.0,\n",
       " 18.0,\n",
       " 35.0,\n",
       " 42.0,\n",
       " 24.0,\n",
       " 48.0,\n",
       " 19.0,\n",
       " 38.0,\n",
       " 27.0,\n",
       " 27.0,\n",
       " 29.0,\n",
       " 35.0,\n",
       " 36.0,\n",
       " 21.0,\n",
       " 70.0,\n",
       " 19.0,\n",
       " 6.0,\n",
       " 33.0,\n",
       " 36.0,\n",
       " 51.0,\n",
       " 57.0,\n",
       " 43.0,\n",
       " 17.0,\n",
       " 29.0,\n",
       " 46.0,\n",
       " 49.0,\n",
       " 11.0,\n",
       " 39.0,\n",
       " 33.0,\n",
       " 52.0,\n",
       " 27.0,\n",
       " 39.0,\n",
       " 16.0,\n",
       " 51.0,\n",
       " 48.0,\n",
       " 31.0,\n",
       " 47.0,\n",
       " 33.0,\n",
       " 56.0,\n",
       " 19.0,\n",
       " 26.0]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_age = df1.reset_index()[\"Age\"].to_list()\n",
    "num_age"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa056cc6",
   "metadata": {},
   "source": [
    "### 年龄段分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "27975d3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "tl = []\n",
    "a1 = [] # 幼儿\n",
    "a2 = [] # 学龄前\n",
    "a3 = [] # 学龄初\n",
    "a4 = [] # 少\n",
    "a5 = [] # 青年\n",
    "a6 = [] # 中\n",
    "a7 = [] # 老\n",
    "na = []\n",
    "\n",
    "for i in num_age:\n",
    "    a = int(i)\n",
    "    tl.append(a)\n",
    "    if a in range(0,4):\n",
    "        a1.append(a)\n",
    "    elif a in range(4,8):\n",
    "        a2.append(a)\n",
    "    elif a in range(8,13):\n",
    "        a3.append(a)\n",
    "    elif a in range(13,16):\n",
    "        a4.append(a)\n",
    "    elif a in range(16,31):\n",
    "        a5.append(a)\n",
    "    elif a in range(31,51):\n",
    "        a6.append(a)\n",
    "    elif a in range(51,101):\n",
    "        a7.append(a)\n",
    "    else:\n",
    "        na.append(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "535f9235",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(a4)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "105d1d86",
   "metadata": {},
   "source": [
    "### 构建——变量：性别；年龄段；是否生还"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "40dcc895",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>16.7000</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>58.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>C103</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>76.7292</td>\n",
       "      <td>D33</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>853</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>39.4000</td>\n",
       "      <td>D28</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>48.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>25.9292</td>\n",
       "      <td>D17</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>52.5542</td>\n",
       "      <td>D35</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>56.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>83.1583</td>\n",
       "      <td>C50</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>88 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Cabin Embarked\n",
       "1           1       1  female  38.0      1      0  71.2833   C85        C\n",
       "3           1       1  female  35.0      1      0  53.1000  C123        S\n",
       "10          1       3  female   4.0      1      1  16.7000    G6        S\n",
       "11          1       1  female  58.0      0      0  26.5500  C103        S\n",
       "52          1       1  female  49.0      1      0  76.7292   D33        C\n",
       "..        ...     ...     ...   ...    ...    ...      ...   ...      ...\n",
       "853         1       1  female  16.0      0      1  39.4000   D28        S\n",
       "862         1       1  female  48.0      0      0  25.9292   D17        S\n",
       "871         1       1  female  47.0      1      1  52.5542   D35        S\n",
       "879         1       1  female  56.0      0      1  83.1583   C50        C\n",
       "887         1       1  female  19.0      0      0  30.0000   B42        S\n",
       "\n",
       "[88 rows x 9 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F1青年_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "F1青年_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "87475ce4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "35"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，青年\n",
    "F1青年_2 = []\n",
    "\n",
    "for i in F1青年_1[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1青年_2.append(i)\n",
    "\n",
    "a = len(F1青年_2)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "2ac643ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F1青 = []\n",
    "F1青年 = F1青年_1[F1青年_1[\"Survived\"]==1]\n",
    "for i in F1青年[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1青.append(i)\n",
    "        \n",
    "b = len(F1青)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "62825f58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9428571428571428"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 女性，青年， 生还率\n",
    "F1q_Sr = b/a\n",
    "F1q_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "22639116",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，幼儿\n",
    "F1幼儿_2 = []\n",
    "F1幼 = []\n",
    "\n",
    "F1幼儿_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1幼儿_1[\"Age\"]:\n",
    "    if i in range(0,4):\n",
    "        F1幼儿_2.append(i)\n",
    "\n",
    "F1幼儿a = len(F1幼儿_2)\n",
    "\n",
    "F1幼儿 = F1幼儿_1[F1幼儿_1[\"Survived\"]==1]\n",
    "for i in F1幼儿[\"Age\"]:\n",
    "    if i in range(0,4):\n",
    "        F1幼.append(i)\n",
    "        \n",
    "F1幼儿b = len(F1幼)\n",
    "\n",
    "F1y_Sr = F1幼儿b/F1幼儿a\n",
    "F1y_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "cf741eeb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，学龄前\n",
    "F1学龄前_2 = []\n",
    "F1龄前 = []\n",
    "\n",
    "F1学龄前_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1学龄前_1[\"Age\"]:\n",
    "    if i in range(4,8):\n",
    "        F1学龄前_2.append(i)\n",
    "\n",
    "F1学龄前a = len(F1学龄前_2)\n",
    "\n",
    "F1学龄前 = F1学龄前_1[F1学龄前_1[\"Survived\"]==1]\n",
    "for i in F1学龄前[\"Age\"]:\n",
    "    if i in range(4,8):\n",
    "        F1龄前.append(i)\n",
    "        \n",
    "F1学龄前b = len(F1龄前)\n",
    " \n",
    "F1xq_Sr = F1学龄前b/F1学龄前a\n",
    "F1xq_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "eded8212",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9428571428571428"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，学龄初\n",
    "F1学龄初_2 = []\n",
    "F1学初 = []\n",
    "\n",
    "F1学龄初_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1学龄初_1[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1学龄初_2.append(i)\n",
    "\n",
    "F1学龄初a = len(F1学龄初_2)\n",
    "\n",
    "F1学龄初 = F1学龄初_1[F1学龄初_1[\"Survived\"]==1]\n",
    "for i in F1学龄初[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1学初.append(i)\n",
    "\n",
    "F1学龄初b = len(F1学初)\n",
    "\n",
    "F1xc_Sr = F1学龄初b/F1学龄初a\n",
    "F1xc_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "fc4f6293",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9428571428571428"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，少年\n",
    "F1少年_2 = []\n",
    "F1少 = []\n",
    "\n",
    "F1少年_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1少年_1[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1少年_2.append(i)\n",
    "\n",
    "F1少年a = len(F1少年_2)\n",
    "\n",
    "F1少年 = F1少年_1[F1少年_1[\"Survived\"]==1]\n",
    "for i in F1少年[\"Age\"]:\n",
    "    if i in range(16,31):\n",
    "        F1少.append(i)\n",
    "\n",
    "F1少年b = len(F1少)\n",
    "\n",
    "F1s_Sr = F1少年b/F1少年a\n",
    "F1s_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "13a1bdc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9705882352941176"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，中年\n",
    "F1中年_2 = []\n",
    "F1中 = []\n",
    "\n",
    "F1中年_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1中年_1[\"Age\"]:\n",
    "    if i in range(31,51):\n",
    "        F1中年_2.append(i)\n",
    "\n",
    "F1中年a = len(F1中年_2)\n",
    "\n",
    "F1中年 = F1中年_1[F1中年_1[\"Survived\"]==1]\n",
    "for i in F1中年[\"Age\"]:\n",
    "    if i in range(31,51):\n",
    "        F1中.append(i)\n",
    "    \n",
    "F1中年b = len(F1中)\n",
    "\n",
    "F1z_Sr = F1中年b/F1中年a\n",
    "F1z_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "2c1132b3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9166666666666666"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 女性，生还，老年\n",
    "F1老年_2 = []\n",
    "F1老 = []\n",
    "\n",
    "F1老年_1 = df1[df1[\"Sex\"]==\"female\"]\n",
    "\n",
    "for i in F1老年_1[\"Age\"]:\n",
    "    if i in range(51,101):\n",
    "        F1老年_2.append(i)\n",
    "\n",
    "F1老年a = len(F1老年_2)\n",
    "\n",
    "F1老年 = F1老年_1[F1老年_1[\"Survived\"]==1]\n",
    "for i in F1老年[\"Age\"]:\n",
    "    if i in range(51,101):\n",
    "        F1老.append(i)\n",
    "    \n",
    "F1老年b = len(F1老)\n",
    "\n",
    "F1l_Sr = F1老年b/F1老年a\n",
    "F1l_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "531f3dc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Sr(sex_c,age_1,age_2):\n",
    "    F1ag_2 = []\n",
    "    F1a = []\n",
    "    F1ag_1 = df1[df1[\"Sex\"]==sex_c]\n",
    "\n",
    "    for i in F1ag_1[\"Age\"]:\n",
    "        if i in range(age_1,age_2):\n",
    "            F1ag_2.append(i)\n",
    "\n",
    "    F1ag_a = len(F1ag_2)\n",
    "\n",
    "    F1ag = F1ag_1[F1ag_1[\"Survived\"]==1]\n",
    "    for i in F1ag[\"Age\"]:\n",
    "        if i in range(age_1,age_2):\n",
    "            F1a.append(i)\n",
    "\n",
    "    F1ag_b = len(F1a)\n",
    "\n",
    "    F1Sr = F1ag_b/F1ag_a\n",
    "    return F1Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "id": "80e9d53a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4444444444444444"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 幼年:0-4 学前:4-8 学初:8-13 少:13-16 青年:16-31 中:31-51 老:51-101\n",
    "Sr(\"male\",31,51) # 男，中年"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ebde093f",
   "metadata": {},
   "outputs": [],
   "source": [
    "M1y_Sr = Sr(\"male\",0,4) # 男，幼年"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "aca0ac92",
   "metadata": {},
   "outputs": [],
   "source": [
    "M1xq_Sr = Sr(\"male\",4,8) # 男，学前"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ec5010da",
   "metadata": {},
   "outputs": [],
   "source": [
    "M1xc_Sr = Sr(\"male\",8,13) # 男，学初"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "b9d68429",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# M1s_Sr = Sr(\"male\",13,16) # 男，少 （无数据）\n",
    "M1s_Sr = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "6f3b1aea",
   "metadata": {},
   "outputs": [],
   "source": [
    "M1q_Sr = Sr(\"male\",16,31) # 男，青"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "0e444378",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4444444444444444"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "M1z_Sr = Sr(\"male\",31,51) # 男，中\n",
    "M1z_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "c73d6405",
   "metadata": {},
   "outputs": [],
   "source": [
    "M1l_Sr = Sr(\"male\",51,101) # 男，老"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3b0265a",
   "metadata": {},
   "source": [
    "### 数据汇总"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "6c0a15f1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 0.58, 0.62, 0.58, 0.58, 0.6, 0.57]\n"
     ]
    }
   ],
   "source": [
    "# 参数：cal\n",
    "女性 = [F1y_Sr,F1xc_Sr,F1xq_Sr,F1s_Sr,F1q_Sr,F1z_Sr,F1l_Sr]\n",
    "男性 = [M1y_Sr,M1xc_Sr,M1xq_Sr,M1s_Sr,M1q_Sr,M1z_Sr,M1l_Sr]\n",
    "\n",
    "Female_res = []\n",
    "Male_res = []\n",
    "\n",
    "for i in 女性:\n",
    "    fres = i*cal\n",
    "    fres2 = str(fres)\n",
    "    fres3 = fres2[:4]\n",
    "    fres4 = float(fres3)\n",
    "    Female_res.append(fres4)\n",
    "    \n",
    "print(Female_res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "50fb1978",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.62, 0.62, 0.62, 0.0, 0.26, 0.27, 0.15]\n"
     ]
    }
   ],
   "source": [
    "for i in 男性:\n",
    "    mres = i*cal\n",
    "    mres2 = str(mres)\n",
    "    mres3 = mres2[:4]\n",
    "    mres4 = float(mres3)\n",
    "    Male_res.append(mres4)\n",
    "    \n",
    "print(Male_res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "72b1038a",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>54.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>E46</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>58.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>C103</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>28.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>A6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>52.5542</td>\n",
       "      <td>D35</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>872</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>B51 B53 B55</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>56.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>83.1583</td>\n",
       "      <td>C50</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>216 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare        Cabin  \\\n",
       "1           1       1  female  38.0      1      0  71.2833          C85   \n",
       "3           1       1  female  35.0      1      0  53.1000         C123   \n",
       "6           0       1    male  54.0      0      0  51.8625          E46   \n",
       "11          1       1  female  58.0      0      0  26.5500         C103   \n",
       "23          1       1    male  28.0      0      0  35.5000           A6   \n",
       "..        ...     ...     ...   ...    ...    ...      ...          ...   \n",
       "871         1       1  female  47.0      1      1  52.5542          D35   \n",
       "872         0       1    male  33.0      0      0   5.0000  B51 B53 B55   \n",
       "879         1       1  female  56.0      0      1  83.1583          C50   \n",
       "887         1       1  female  19.0      0      0  30.0000          B42   \n",
       "889         1       1    male  26.0      0      0  30.0000         C148   \n",
       "\n",
       "    Embarked  \n",
       "1          C  \n",
       "3          S  \n",
       "6          S  \n",
       "11         S  \n",
       "23         S  \n",
       "..       ...  \n",
       "871        S  \n",
       "872        S  \n",
       "879        C  \n",
       "887        S  \n",
       "889        C  \n",
       "\n",
       "[216 rows x 9 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sf_df = df_on.loc[df_on[\"Pclass\"]==1, :]\n",
    "sf_df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6eee3050",
   "metadata": {},
   "source": [
    "#### 柱状图\n",
    "\n",
    "取消缩进：shift+tab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "4ee1c7e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_ori_f = df1[df1[\"Sex\"]==\"female\"]\n",
    "bar_f_P1 = bar_ori_f[bar_ori_f[\"Pclass\"]==1]\n",
    "bar_f_P3 = bar_ori_f[bar_ori_f[\"Pclass\"]==3]\n",
    "bar_f_Fs = bar_ori_f[bar_ori_f[\"Fare\"]<=50]\n",
    "bar_f_Fm = bar_ori_f[bar_ori_f[\"Fare\"]>50]\n",
    "bar_f_P0 = bar_ori_f[bar_ori_f[\"Parch\"]==1]\n",
    "bar_f_P1 = bar_ori_f[bar_ori_f[\"Parch\"]==0]\n",
    "bar_f_Es = bar_ori_f[bar_ori_f[\"Embarked\"]==\"S\"]\n",
    "bar_f_Eq = bar_ori_f[bar_ori_f[\"Embarked\"]==\"Q\"]\n",
    "bar_f_S1 = bar_ori_f[bar_ori_f[\"SibSp\"]==1]\n",
    "bar_f_S0 = bar_ori_f[bar_ori_f[\"SibSp\"]==0]\n",
    "\n",
    "bar_ori_m = df1[df1[\"Sex\"]==\"male\"]\n",
    "bar_m_P1 = bar_ori_m[bar_ori_m[\"Pclass\"]==1]\n",
    "bar_m_P3 = bar_ori_m[bar_ori_m[\"Pclass\"]==3]\n",
    "bar_m_Fs = bar_ori_m[bar_ori_m[\"Fare\"]<=50]\n",
    "bar_m_Fm = bar_ori_m[bar_ori_m[\"Fare\"]>50]\n",
    "bar_m_P0 = bar_ori_m[bar_ori_m[\"Parch\"]==1]\n",
    "bar_m_P1 = bar_ori_m[bar_ori_m[\"Parch\"]==0]\n",
    "bar_m_Es = bar_ori_m[bar_ori_m[\"Embarked\"]==\"S\"]\n",
    "bar_m_Eq = bar_ori_m[bar_ori_m[\"Embarked\"]==\"Q\"]\n",
    "bar_m_S1 = bar_ori_m[bar_ori_m[\"SibSp\"]==1]\n",
    "bar_m_S0 = bar_ori_m[bar_ori_m[\"SibSp\"]==0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "id": "4c1a8ff1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Embarked=S,Q(出发点)，Pclass=1,3（最高与最低级），Fare=50(划分),P与S区分0\n",
    "from pyecharts.charts import Bar\n",
    "\n",
    "x_param = [\"Pclass=1\",\"Fare>50\",\"SibSp=1\",\"Parch=1\",\"Embarked=S\"]\n",
    "bar_g = (\n",
    "    Bar()\n",
    "        .add_xaxis(x_param)\n",
    "        .add_yaxis(\"male\", [len(bar_m_P1),len(bar_m_Fm),len(bar_m_S1),len(bar_m_P1),len(bar_m_Es)])\n",
    "        .add_yaxis(\"female\", [len(bar_f_P1),len(bar_f_Fm),len(bar_f_S1),len(bar_f_P1),len(bar_f_Es)])\n",
    "        .set_global_opts(title_opts=opts.TitleOpts(title=\"Bar-基本示例\", subtitle=\"我是副标题\"))\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "id": "e33b21a5",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"f84a4029267247d4a80d5982c6638014\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_f84a4029267247d4a80d5982c6638014 = echarts.init(\n",
       "                    document.getElementById('f84a4029267247d4a80d5982c6638014'), 'white', {renderer: 'canvas'});\n",
       "                var option_f84a4029267247d4a80d5982c6638014 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"male\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                68,\n",
       "                49,\n",
       "                31,\n",
       "                68,\n",
       "                63\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"female\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                54,\n",
       "                63,\n",
       "                33,\n",
       "                54,\n",
       "                53\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"male\",\n",
       "                \"female\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"male\": true,\n",
       "                \"female\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"Pclass=1\",\n",
       "                \"Fare>50\",\n",
       "                \"SibSp=1\",\n",
       "                \"Parch=1\",\n",
       "                \"Embarked=S\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Bar-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"subtext\": \"\\u6211\\u662f\\u526f\\u6807\\u9898\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_f84a4029267247d4a80d5982c6638014.setOption(option_f84a4029267247d4a80d5982c6638014);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x200b37598e0>"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bar_g.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89c17114",
   "metadata": {},
   "source": [
    "#### 饼图（不同年龄段生还率）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "14fe65fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"975cb4d36f094a7fb3e7c6d52b6a4a34\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_975cb4d36f094a7fb3e7c6d52b6a4a34 = echarts.init(\n",
       "                    document.getElementById('975cb4d36f094a7fb3e7c6d52b6a4a34'), 'white', {renderer: 'canvas'});\n",
       "                var option_975cb4d36f094a7fb3e7c6d52b6a4a34 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"clockwise\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7c\\u513f\",\n",
       "                    \"value\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5b66\\u9f84\\u524d\",\n",
       "                    \"value\": 4\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5b66\\u9f84\\u521d\",\n",
       "                    \"value\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5c11\\u5e74\",\n",
       "                    \"value\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u9752\\u5e74\",\n",
       "                    \"value\": 56\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e2d\\u5e74\",\n",
       "                    \"value\": 82\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8001\\u5e74\",\n",
       "                    \"value\": 32\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}: {c}\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5e7c\\u513f\",\n",
       "                \"\\u5b66\\u9f84\\u524d\",\n",
       "                \"\\u5b66\\u9f84\\u521d\",\n",
       "                \"\\u5c11\\u5e74\",\n",
       "                \"\\u9752\\u5e74\",\n",
       "                \"\\u4e2d\\u5e74\",\n",
       "                \"\\u8001\\u5e74\"\n",
       "            ],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5e74\\u9f84\\u6bb5\\u5206\\u5e03\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_975cb4d36f094a7fb3e7c6d52b6a4a34.setOption(option_975cb4d36f094a7fb3e7c6d52b6a4a34);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x200b0590cd0>"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Page, Pie\n",
    "\n",
    "# 心理年龄\n",
    "data = {\n",
    "    '幼儿': len(a1),\n",
    "    '学龄前': len(a2),\n",
    "    '学龄初': len(a3),\n",
    "    '少年':len(a4),\n",
    "    '青年':len(a5),\n",
    "    '中年':len(a6),\n",
    "    '老年':len(a7)\n",
    "}\n",
    "\n",
    "def pie_base() -> Pie:\n",
    "    pie_c = (\n",
    "        Pie()\n",
    "        .add(\"\", [list(z) for z in zip(data.keys(), data.values())])\n",
    "        .set_global_opts(title_opts=opts.TitleOpts(title=\"年龄段分布\"))\n",
    "        .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    "    )\n",
    "    return pie_c\n",
    "pie_c = pie_base()\n",
    "pie_c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "3023cc2f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "88"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fm_num = df1['Sex'] ==\"female\"\n",
    "fm_num.sum()\n",
    "# m_num = df1['Sex'] ==\"male\"\n",
    "# m_num.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "10865d42",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyecharts.options as opts #导入pyecharts库\n",
    "from pyecharts.charts import Line\n",
    "\n",
    "# 不同年龄层，两种性别分别的生还率\n",
    "\n",
    "num = Female_res #女性个年龄段的生还率\n",
    "num2 = Male_res\n",
    "lab = [\"幼儿\", \"学龄前\", \"学龄初\", \"少年\", \"青年\", \"中年\", \"老年\"]\n",
    "\n",
    "z = (        \n",
    "    Line(init_opts=opts.InitOpts(width='720px', height='320px'))       \n",
    "    .add_xaxis(lab)     \n",
    "    .add_yaxis(\"Female\", num,is_smooth=True)       \n",
    "    .add_yaxis(\"Male\",num2,is_smooth=True) #设置平滑曲线属性      \n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"平滑曲线\"))    \n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd6c9ce1",
   "metadata": {},
   "source": [
    "#### 曲线图（年龄长势影响生还率）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "6fd4f00e",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"32051906a541412bacc4d445933f61e3\" style=\"width:720px; height:320px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_32051906a541412bacc4d445933f61e3 = echarts.init(\n",
       "                    document.getElementById('32051906a541412bacc4d445933f61e3'), 'white', {renderer: 'canvas'});\n",
       "                var option_32051906a541412bacc4d445933f61e3 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": true,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5e7c\\u513f\",\n",
       "                    0.0\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5b66\\u9f84\\u524d\",\n",
       "                    0.58\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5b66\\u9f84\\u521d\",\n",
       "                    0.62\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5c11\\u5e74\",\n",
       "                    0.58\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u9752\\u5e74\",\n",
       "                    0.58\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u4e2d\\u5e74\",\n",
       "                    0.6\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u8001\\u5e74\",\n",
       "                    0.57\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": true,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5e7c\\u513f\",\n",
       "                    0.62\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5b66\\u9f84\\u524d\",\n",
       "                    0.62\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5b66\\u9f84\\u521d\",\n",
       "                    0.62\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5c11\\u5e74\",\n",
       "                    0.0\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u9752\\u5e74\",\n",
       "                    0.26\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u4e2d\\u5e74\",\n",
       "                    0.27\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u8001\\u5e74\",\n",
       "                    0.15\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u5e7c\\u513f\",\n",
       "                \"\\u5b66\\u9f84\\u524d\",\n",
       "                \"\\u5b66\\u9f84\\u521d\",\n",
       "                \"\\u5c11\\u5e74\",\n",
       "                \"\\u9752\\u5e74\",\n",
       "                \"\\u4e2d\\u5e74\",\n",
       "                \"\\u8001\\u5e74\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5e73\\u6ed1\\u66f2\\u7ebf\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_32051906a541412bacc4d445933f61e3.setOption(option_32051906a541412bacc4d445933f61e3);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x200b049abb0>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "1dfcdb4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Osr(age_1,age_2):\n",
    "    F1ag_2 = []\n",
    "    F1a = []\n",
    "\n",
    "    for i in df1[\"Age\"]:\n",
    "        if i in range(age_1,age_2):\n",
    "            F1ag_2.append(i)\n",
    "\n",
    "    F1ag_a = len(F1ag_2)\n",
    "\n",
    "    F1ag = df1[df1[\"Survived\"]==1]\n",
    "    for i in F1ag[\"Age\"]:\n",
    "        if i in range(age_1,age_2):\n",
    "            F1a.append(i)\n",
    "\n",
    "    F1ag_b = len(F1a)\n",
    "\n",
    "    F1Sr = F1ag_b/F1ag_a\n",
    "    return F1Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "a6a06879",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[37.0, 62.0, 62.0, 62.0, 46.0, 41.0, 31.0]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 幼年:0-4 学前:4-8 学初:8-13 少:13-16 青年:16-31 中:31-51 老:51-101\n",
    "osr_res = []\n",
    "ores_list = []\n",
    "\n",
    "osr1 = Osr(0,4)\n",
    "osr2 = Osr(4,8)\n",
    "osr3 = Osr(8,13)\n",
    "osr4 = Osr(13,16)\n",
    "osr5 = Osr(16,31)\n",
    "osr6 = Osr(31,51)\n",
    "osr7 = Osr(51,101)\n",
    "\n",
    "osr_all = [osr1,osr2,osr3,osr4,osr5,osr6,osr7]\n",
    "\n",
    "for i in osr_all:\n",
    "    fres = i*cal\n",
    "    fres2 = str(fres)\n",
    "    fres3 = fres2[:4]\n",
    "    fres4 = float(fres3)\n",
    "    osr_res.append(fres4)\n",
    "    \n",
    "# for i in osr_res:\n",
    "#     ores  = i*100\n",
    "#     ores_list.append(ores)\n",
    "\n",
    "# ores_list"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d1dfc34",
   "metadata": {},
   "source": [
    "#### 漏斗图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "6cb6616b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b87775ea0aa144fa86775dced13fedd7\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_b87775ea0aa144fa86775dced13fedd7 = echarts.init(\n",
       "                    document.getElementById('b87775ea0aa144fa86775dced13fedd7'), 'white', {renderer: 'canvas'});\n",
       "                var option_b87775ea0aa144fa86775dced13fedd7 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"funnel\",\n",
       "            \"name\": \"\\u751f\\u8fd8\\u7387/w\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7c\\u513f\",\n",
       "                    \"value\": 0.37\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5b66\\u9f84\\u524d\",\n",
       "                    \"value\": 0.62\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5b66\\u9f84\\u521d\",\n",
       "                    \"value\": 0.62\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5c11\\u5e74\",\n",
       "                    \"value\": 0.62\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u9752\\u5e74\",\n",
       "                    \"value\": 0.46\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e2d\\u5e74\",\n",
       "                    \"value\": 0.41\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8001\\u5e74\",\n",
       "                    \"value\": 0.31\n",
       "                }\n",
       "            ],\n",
       "            \"sort\": \"ascending\",\n",
       "            \"gap\": 0,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"inside\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5e7c\\u513f\",\n",
       "                \"\\u5b66\\u9f84\\u521d\",\n",
       "                \"\\u8001\\u5e74\",\n",
       "                \"\\u5c11\\u5e74\",\n",
       "                \"\\u4e2d\\u5e74\",\n",
       "                \"\\u5b66\\u9f84\\u524d\",\n",
       "                \"\\u9752\\u5e74\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5e7c\\u513f\": true,\n",
       "                \"\\u5b66\\u9f84\\u524d\": true,\n",
       "                \"\\u5b66\\u9f84\\u521d\": true,\n",
       "                \"\\u5c11\\u5e74\": true,\n",
       "                \"\\u9752\\u5e74\": true,\n",
       "                \"\\u4e2d\\u5e74\": true,\n",
       "                \"\\u8001\\u5e74\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u6f0f\\u6597\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_b87775ea0aa144fa86775dced13fedd7.setOption(option_b87775ea0aa144fa86775dced13fedd7);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x200b0ba83a0>"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Funnel\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "data = [\n",
    "    [\"幼儿\",osr_res[0]],\n",
    "    [\"学龄前\",osr_res[1]],\n",
    "    [\"学龄初\",osr_res[2]],\n",
    "    [\"少年\",osr_res[3]],\n",
    "    [\"青年\",osr_res[4]],\n",
    "    [\"中年\",osr_res[5]],\n",
    "    [\"老年\",osr_res[6]]\n",
    "]\n",
    "\n",
    "c = (Funnel()\n",
    "    .add(\"生还率/w\",\n",
    "    data,\n",
    "    label_opts=opts.LabelOpts(position=\"inside\"),\n",
    "    sort_=\"ascending\",)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"漏斗图\"))\n",
    "    )\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "891afeaa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Montvila, Rev. Juozas</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211536</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Graham, Miss. Margaret Edith</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>112053</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>W./C. 6607</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Behr, Mr. Karl Howell</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>111369</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>370376</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "0              1         0       3   \n",
       "1              2         1       1   \n",
       "2              3         1       3   \n",
       "3              4         1       1   \n",
       "4              5         0       3   \n",
       "..           ...       ...     ...   \n",
       "886          887         0       2   \n",
       "887          888         1       1   \n",
       "888          889         0       3   \n",
       "889          890         1       1   \n",
       "890          891         0       3   \n",
       "\n",
       "                                                  Name     Sex   Age  SibSp  \\\n",
       "0                              Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                               Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                             Allen, Mr. William Henry    male  35.0      0   \n",
       "..                                                 ...     ...   ...    ...   \n",
       "886                              Montvila, Rev. Juozas    male  27.0      0   \n",
       "887                       Graham, Miss. Margaret Edith  female  19.0      0   \n",
       "888           Johnston, Miss. Catherine Helen \"Carrie\"  female   NaN      1   \n",
       "889                              Behr, Mr. Karl Howell    male  26.0      0   \n",
       "890                                Dooley, Mr. Patrick    male  32.0      0   \n",
       "\n",
       "     Parch            Ticket     Fare Cabin Embarked  \n",
       "0        0         A/5 21171   7.2500   NaN        S  \n",
       "1        0          PC 17599  71.2833   C85        C  \n",
       "2        0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3        0            113803  53.1000  C123        S  \n",
       "4        0            373450   8.0500   NaN        S  \n",
       "..     ...               ...      ...   ...      ...  \n",
       "886      0            211536  13.0000   NaN        S  \n",
       "887      0            112053  30.0000   B42        S  \n",
       "888      2        W./C. 6607  23.4500   NaN        S  \n",
       "889      0            111369  30.0000  C148        C  \n",
       "890      0            370376   7.7500   NaN        Q  \n",
       "\n",
       "[891 rows x 12 columns]"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_or"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "becd1ace",
   "metadata": {},
   "source": [
    "#### 关系节点图\n",
    "\n",
    "> name:p-1 e-c, sr-int"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "296ac2e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Pchoose = df1[df1[\"Pclass\"]==1]\n",
    "# PEchoose = Pchoose[Pchoose[\"Embarked\"]==\"C\"]\n",
    "\n",
    "# PE_Sr = len(PEchoose)/len(df1)\n",
    "# PE_Sr\n",
    "\n",
    "def csr1(Pclass_ip,Embarked_ip):\n",
    "    Pchoose = df1[df1[\"Pclass\"]==Pclass_ip]\n",
    "    PEchoose = Pchoose[Pchoose[\"Embarked\"]==Embarked_ip]\n",
    "    PE_Sr = len(PEchoose)/len(df1)\n",
    "    return PE_Sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "9d05d733",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[44.42622950819672,\n",
       " 60.81967213114754,\n",
       " 11.092896174863387,\n",
       " 11.092896174863387,\n",
       " 17.103825136612024,\n",
       " 10.0,\n",
       " 10.0,\n",
       " 15.46448087431694,\n",
       " 10.0]"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P1EC =  csr1(1,\"C\")*100+10 # Pclass=1&Embarked=C\n",
    "P1ES =  csr1(1,\"S\")*100+10 \n",
    "P1EQ =  csr1(1,\"Q\")*100+10 \n",
    "\n",
    "P2EC = csr1(2,\"C\")*100+10 \n",
    "P2ES = csr1(2,\"S\")*100+10 \n",
    "P2EQ = csr1(2,\"Q\")*100+10 \n",
    "\n",
    "P3EC = csr1(3,\"C\")*100+10 \n",
    "P3ES = csr1(3,\"S\")*100+10 \n",
    "P3EQ = csr1(3,\"Q\")*100+10 \n",
    "\n",
    "\n",
    "PE_namelist = [\"P1EC\",\"P1ES\",\"P1EQ\",\"P2EC\",\"P2ES\",\"P2EQ\",\"P3EC\",\"P3ES\",\"P3EQ\"]\n",
    "PE_list = [P1EC,P1ES,P1EQ,P2EC,P2ES,P2EQ,P3EC,P3ES,P3EQ]\n",
    "PE_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "284b58eb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'name': 'P1EC', 'symbolSize': 44.42622950819672},\n",
       " {'name': 'P1ES', 'symbolSize': 60.81967213114754},\n",
       " {'name': 'P1EQ', 'symbolSize': 11.092896174863387},\n",
       " {'name': 'P2EC', 'symbolSize': 11.092896174863387},\n",
       " {'name': 'P2ES', 'symbolSize': 17.103825136612024},\n",
       " {'name': 'P2EQ', 'symbolSize': 10.0},\n",
       " {'name': 'P3EC', 'symbolSize': 10.0},\n",
       " {'name': 'P3ES', 'symbolSize': 15.46448087431694},\n",
       " {'name': 'P3EQ', 'symbolSize': 10.0}]"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nodes = []\n",
    "for i in range(9):\n",
    "    notest = {\"name\":PE_namelist[i],\"symbolSize\":PE_list[i]}\n",
    "    nodes.append(notest)\n",
    "\n",
    "nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "bcfda3c2",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"94dea16fd48e481cb348174eafccf055\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_94dea16fd48e481cb348174eafccf055 = echarts.init(\n",
       "                    document.getElementById('94dea16fd48e481cb348174eafccf055'), 'white', {renderer: 'canvas'});\n",
       "                var option_94dea16fd48e481cb348174eafccf055 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"graph\",\n",
       "            \"layout\": \"force\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"circular\": {\n",
       "                \"rotateLabel\": false\n",
       "            },\n",
       "            \"force\": {\n",
       "                \"repulsion\": 8000,\n",
       "                \"edgeLength\": 50,\n",
       "                \"gravity\": 0.2\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"roam\": true,\n",
       "            \"draggable\": false,\n",
       "            \"focusNodeAdjacency\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"P1EC\",\n",
       "                    \"symbolSize\": 44.42622950819672\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P1ES\",\n",
       "                    \"symbolSize\": 60.81967213114754\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P1EQ\",\n",
       "                    \"symbolSize\": 11.092896174863387\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P2EC\",\n",
       "                    \"symbolSize\": 11.092896174863387\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P2ES\",\n",
       "                    \"symbolSize\": 17.103825136612024\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P2EQ\",\n",
       "                    \"symbolSize\": 10.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P3EC\",\n",
       "                    \"symbolSize\": 10.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P3ES\",\n",
       "                    \"symbolSize\": 15.46448087431694\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"P3EQ\",\n",
       "                    \"symbolSize\": 10.0\n",
       "                }\n",
       "            ],\n",
       "            \"edgeLabel\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"edgeSymbol\": [\n",
       "                null,\n",
       "                null\n",
       "            ],\n",
       "            \"edgeSymbolSize\": 10,\n",
       "            \"links\": [\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EC\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1ES\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P1EQ\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EC\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2ES\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P2EQ\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EC\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3ES\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P1EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P1ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P1EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P2EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P2ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P2EQ\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P3EC\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P3ES\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"P3EQ\",\n",
       "                    \"target\": \"P3EQ\"\n",
       "                }\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Graph-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_94dea16fd48e481cb348174eafccf055.setOption(option_94dea16fd48e481cb348174eafccf055);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x200b0714700>"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Graph\n",
    "\n",
    "# nodes = [\n",
    "#     {\"name\": \"结点1\", \"symbolSize\": 38},\n",
    "#     {\"name\": \"结点2\", \"symbolSize\": 20},\n",
    "#     {\"name\": \"结点3\", \"symbolSize\": 14},\n",
    "#     {\"name\": \"结点4\", \"symbolSize\": 46},\n",
    "#     {\"name\": \"结点5\", \"symbolSize\": 50},\n",
    "#     {\"name\": \"结点6\", \"symbolSize\": 82},\n",
    "#     {\"name\": \"结点7\", \"symbolSize\": 4},\n",
    "#     {\"name\": \"结点8\", \"symbolSize\": 29},\n",
    "# ]\n",
    "links = []\n",
    "for i in nodes:\n",
    "    for j in nodes:\n",
    "        links.append({\"source\": i.get(\"name\"), \"target\": j.get(\"name\")})\n",
    "c = (\n",
    "    Graph()\n",
    "    .add(\"\", nodes, links, repulsion=8000)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Graph-基本示例\"))\n",
    "#     .render(\"graph_base.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "59b23815",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# subplot(2 ，2 ，1)，那么这个figure就是个2*2的矩阵图，也就是总共有4个图，1就代表了第一幅图。也可以写成subplot（221）\n",
    "\n",
    "plt.figure(figsize = (10,5)) #设置窗口大小\n",
    "plt.subplot(121) \n",
    "sns.countplot(x='Survived', data=df_on) # 柱状图\n",
    "plt.title('Survival count')\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.pie([tnsn,tsn],labels=['No Survived','Survived'],autopct='%1.0f%%') # 饼状图\n",
    "plt.title('Survival rate') \n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "8f2b746b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import io\n",
    "import base64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "08b8a764",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = io.BytesIO()\n",
    "plt.savefig(img, format='png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "8cc3c521",
   "metadata": {},
   "outputs": [],
   "source": [
    "img.seek(0)\n",
    "plot_url = base64.b64encode(img.getvalue()).decode()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "afa5ad80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>119</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Survived\n",
       "Pclass          \n",
       "1            136\n",
       "2             87\n",
       "3            119"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_on[['Pclass','Survived']].groupby(['Pclass']).count()\n",
    "s_df = df_on[df_on[ 'Survived'] == 1 ]\n",
    "s_df[['Pclass','Survived']].groupby(['Pclass']).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c05de153",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据筛选分析：Pclass船舱登记；sex性别；age年龄；sibsp乘客非直系亲属数量；parch直系亲属数量；fare票格；cabin仓位...\n",
    "# 不同级别客舱生Pclass还人数和占总生还人数的比例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "c7ab4166",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize= (10, 5))\n",
    "plt.subplot(121)\n",
    "sns.countplot(x='Pclass', data=s_df)\n",
    "plt.title('Pclass Survived') \n",
    "plt.ylabel('Survived Count')\n",
    "\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.pie([136,87,119],labels=['1','2','3'],autopct='%1.0f%%')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "36de7460",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 性别sex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "f1492ed0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "109 233\n"
     ]
    }
   ],
   "source": [
    "sm_sum = s_df['Sex'][s_df['Sex'] == 'male'].count()\n",
    "sf_sum = s_df['Sex'][s_df['Sex'] == 'female'].count()\n",
    "print(sm_sum,sf_sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "49875a4f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,5))\n",
    "plt.subplot(121)\n",
    "sns.countplot(x='Sex', data=s_df)\n",
    "plt.subplot(122)\n",
    "plt.pie([sm_sum, sf_sum],labels=['male', 'female'],autopct='%1.0f%%')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "bab2e7cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 年龄Age"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "6dc9d5bb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Montvila, Rev. Juozas</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211536</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Graham, Miss. Margaret Edith</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>112053</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>23.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>W./C. 6607</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Behr, Mr. Karl Howell</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>111369</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>370376</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "0              1         0       3   \n",
       "1              2         1       1   \n",
       "2              3         1       3   \n",
       "3              4         1       1   \n",
       "4              5         0       3   \n",
       "..           ...       ...     ...   \n",
       "886          887         0       2   \n",
       "887          888         1       1   \n",
       "888          889         0       3   \n",
       "889          890         1       1   \n",
       "890          891         0       3   \n",
       "\n",
       "                                                  Name     Sex   Age  SibSp  \\\n",
       "0                              Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                               Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                             Allen, Mr. William Henry    male  35.0      0   \n",
       "..                                                 ...     ...   ...    ...   \n",
       "886                              Montvila, Rev. Juozas    male  27.0      0   \n",
       "887                       Graham, Miss. Margaret Edith  female  19.0      0   \n",
       "888           Johnston, Miss. Catherine Helen \"Carrie\"  female  23.0      1   \n",
       "889                              Behr, Mr. Karl Howell    male  26.0      0   \n",
       "890                                Dooley, Mr. Patrick    male  32.0      0   \n",
       "\n",
       "     Parch            Ticket     Fare Cabin Embarked  \n",
       "0        0         A/5 21171   7.2500   NaN        S  \n",
       "1        0          PC 17599  71.2833   C85        C  \n",
       "2        0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3        0            113803  53.1000  C123        S  \n",
       "4        0            373450   8.0500   NaN        S  \n",
       "..     ...               ...      ...   ...      ...  \n",
       "886      0            211536  13.0000   NaN        S  \n",
       "887      0            112053  30.0000   B42        S  \n",
       "888      2        W./C. 6607  23.4500   NaN        S  \n",
       "889      0            111369  30.0000  C148        C  \n",
       "890      0            370376   7.7500   NaN        Q  \n",
       "\n",
       "[891 rows x 12 columns]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 年龄数据空缺处理，填充的年龄为年龄平均值的上下一个标准差范围内的随机数\n",
    "aat   = df_or[\"Age\"].mean()\n",
    "sat      = df_or[\"Age\"].std()\n",
    "cnat = df_or[\"Age\"].isnull().sum()\n",
    "\n",
    "# 生成年龄随机数\n",
    "rand_1 = np.random.randint(aat - sat, aat + sat, size = cnat)\n",
    "\n",
    "# 为空缺值赋值\n",
    "df_or[\"Age\"][np.isnan(df_or[\"Age\"])] = rand_1\n",
    "df_or"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10131c0a",
   "metadata": {},
   "source": [
    "### 联合分析（静态图）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4835a6b8",
   "metadata": {},
   "source": [
    "#### 年龄分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "ab3700ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 年龄分布\n",
    "plt.figure(figsize=(12,5))\n",
    "plt.subplot(121)\n",
    "df_or['Age'].hist(bins = 70)\n",
    "plt.xlabel('Age')\n",
    "plt.ylabel('Num')\n",
    "\n",
    "plt.subplot(122)\n",
    "df_or.boxplot(column='Age', showfliers=False)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "79b81671",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    891.000000\n",
       "mean      29.203333\n",
       "std       13.594314\n",
       "min        0.420000\n",
       "25%       20.000000\n",
       "50%       28.000000\n",
       "75%       37.000000\n",
       "max       80.000000\n",
       "Name: Age, dtype: float64"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_or['Age'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "980a1c35",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = ['children', 'juvenile', 'adults', 'agedness']\n",
    "\n",
    "children_df = df_or[ df_or['Age'] <= 12]\n",
    "juvenile_df = df_or[(df_or['Age'] > 12) & (df_or['Age'] < 18)]\n",
    "adults_df = df_or[(df_or['Age'] >= 18) & (df_or['Age'] < 65)]\n",
    "agedness_df = df_or[df_or['Age'] >= 65]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "5d132bdc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "40 32 269 1\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[40, 32, 269, 1]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生还人数\n",
    "children_ss = children_df['Survived'].sum()\n",
    "juvenile_ss = juvenile_df['Survived'].sum()\n",
    "adults_ss = adults_df['Survived'].sum()\n",
    "agedness_ss = agedness_df['Survived'].sum()\n",
    "print(children_ss, juvenile_ss, adults_ss , agedness_ss)\n",
    "\n",
    "b = [children_ss, juvenile_ss, adults_ss , agedness_ss]\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "90008599",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5797101449275363 0.41025641025641024 0.3669849931787176 0.09090909090909091\n"
     ]
    }
   ],
   "source": [
    "# 各年龄段生还率\n",
    "\n",
    "children_sr = children_df[\"Survived\"].mean()\n",
    "juvenile_sr = juvenile_df['Survived'].mean()\n",
    "adults_sr = adults_df['Survived'].mean()\n",
    "agedness_sr = agedness_df['Survived'].mean()\n",
    "print(children_sr, juvenile_sr, adults_sr, agedness_sr)\n",
    "\n",
    "y = [children_sr, juvenile_sr, adults_sr, agedness_sr]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "c9cc1f66",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([<matplotlib.axis.XTick at 0x209acb46ee0>,\n",
       "  <matplotlib.axis.XTick at 0x209acb46ca0>,\n",
       "  <matplotlib.axis.XTick at 0x209ab4d3640>,\n",
       "  <matplotlib.axis.XTick at 0x209ab6cce20>],\n",
       " [Text(0, 0, 'children'),\n",
       "  Text(1, 0, 'juvenile'),\n",
       "  Text(2, 0, 'adults'),\n",
       "  Text(3, 0, 'agedness')])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,5))\n",
    "plt.subplot(121)\n",
    "\n",
    "# 画条\n",
    "x_pos = list(range(len(x)))\n",
    "rects = plt.bar(x_pos,b, align='center', alpha=0.5)\n",
    "\n",
    "# 标签\n",
    "def autolabel(rects):\n",
    "    for ii,rect in enumerate(rects):\n",
    "        height = rect.get_height()\n",
    "        plt.text(rect.get_x()+rect.get_width()/2., 1.02*height, '%s'% (b[ii]),\n",
    "            ha='center', va='bottom')\n",
    "autolabel(rects)\n",
    "\n",
    "# 设置标题\n",
    "plt.ylabel('Survival num')\n",
    "plt.xticks(x_pos, x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ec7af5a",
   "metadata": {},
   "source": [
    "#### 年龄+性别\n",
    "\n",
    "[联合分析](\"https://www.zhihu.com/search?type=content&q=python%20%E6%B3%B0%E5%9D%A6%E5%B0%BC%E5%85%8B%E5%8F%B7%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "f14474e3",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\seaborn\\distributions.py:2557: FutureWarning:\n",
      "\n",
      "`distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\seaborn\\distributions.py:2557: FutureWarning:\n",
      "\n",
      "`distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\seaborn\\distributions.py:2557: FutureWarning:\n",
      "\n",
      "`distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\seaborn\\distributions.py:2557: FutureWarning:\n",
      "\n",
      "`distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Female')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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X36Z5cuXb7u/ZMkSjjjiCNra2li8eDEA999//y6XMWnSJP72b/+W119/ndGjR+/0+KBBgzjxxBOZNWsWn/jEJ+jXrx/7778/I0eO5L777gNKo+j++te/BmDcuHHMnz8fgLlz59blfUrqe8yv2rkHSn1CM87E2bRpE5///Of5wx/+QP/+/Xnf+97H7NmzWbZsGZdddhlf+tKXth2A2Z0LLriAWbNm8aUvfanbeSZNmsSFF17IP//zP2+bNnfuXK644gq+8pWv8M477zB58mQ+9KEPccsttzB16lRuvPFGzjvvvDq9U0mN1tMZZn7VLjKzx16svb09Ozo6euz1WkJXwxh0xaENClm2bBnHHHNMs8vQDrpaLxGxODPbu3lKr7FH5lcP25OGMTDDWk/R/PIrPEmSpIJsoCRJkgqygZIkSSrIBkqSJKkgGyhJkqSCbKAkSZIKchwo9Q2VDhdRKYeVkNSTzLBexz1QUpUigmuuuWbb/Ztuuonrr79+l8/54Q9/yNKlSxtcWddOPfXUuiznM5/5zLZrYEnqvcyw2thASVXae++9eeCBB1i/fn3Fz2lk+GTmtmtYdeXJJ59syOtK6p3MsNrYQElV6t+/PzNmzODmm2/e6bFVq1YxYcIERo8ezRlnnMHq1at58skneeihh7j22msZM2YMK1as6HK53/jGNxg1ahSjR49m8uTJAFx//fXcdNNN2+Y59thjWbVqFatWreLoo4/mkksu4dhjj+XLX/4y11577bb55syZw8yZM4HSdakAJk+ezE9+8pNt82z9NLZlyxauvfZaTjzxREaPHs1tt90GlEJt5syZHH300Zx55pmsW7euxt+cpFZghtXGBkqqwVVXXcXcuXN5/fXXt5v++c9/nunTp/Pcc89x8cUXc/XVV3PqqacyceJEvva1r7FkyRKOPPLILpf51a9+lWeffZbnnnuuyyuc72j58uVceeWVvPjii1x55ZU8+OCD2x679957twXYVpMmTWLBggUAvP322zzyyCN8/OMf5/bbb+eAAw7g6aef5umnn+Y73/kOK1eu5MEHH+Tll19m6dKl3HXXXS33KVBS9cyw6u22gYqIwyPi0YhYGhEvRsSs8vTrI+J3EbGk/POxulQk9SL7778/l1xyCd/4xje2m/7UU08xdepUAKZNm8Yvf/nLipc5evRoLr74Yr7//e/Tv//uz/M44ogjOPnkkwEYNmwY733ve/nVr37Fhg0beOmllxg3btx285977rk8+uij/PGPf+Qf//EfOf3009lnn334+c9/zl133cWYMWMYO3YsGzZsYPny5Tz++ONMmTKFfv36ccghhzBhwoSK30uzmV/Srplh1avkLLzNwDWZ+UxE7AcsjoiHy4/dnJk37eK5Up/3hS98gRNOOIFLL63PWS8/+clPePzxx/nxj3/MDTfcwPPPP0///v23Ozbgrbfe2nZ733333e75kydPZsGCBXzgAx/g/PPPJyK2e3zgwIGMHz+en/3sZ9t9ustMbr31Vs4+++zt5v/pT39al/fVJOaXtBtmWHV220Bl5lpgbfn2GxGxDDi0IdVI1WriKbuDBw/moosu4vbbb+ezn/0sUDpbZP78+UybNo25c+fykY98BID99tuPN954o9tlvfvuu7zyyit89KMf5bTTTmP+/Pls2rSJtrY2Fi5cCMAzzzzDypUru13G+eefzw033MCzzz7LjTfe2OU8kyZN4rvf/S4dHR3MmTMHgLPPPptvf/vbTJgwgQEDBvCb3/yGQw89lNNPP53bbruN6dOns27dOh599NFtn0xbnfmlXsMM26a3ZFihY6Aiog04HlhUnjQzIp6LiO9FxEHdPGdGRHRERMdrr71WW7UqpuOOrn9Ud9dcc812Z7Lceuut3HHHHYwePZq7776bW265BSh9svra177G8ccf3+UBmFu2bOHTn/40xx13HMcffzxXX301Bx54IJ/61KfYuHEjH/zgB/nmN7/J+9///m5rOeiggzjmmGP47W9/y0knndTlPGeddRaPPfYYZ555Ju95z3sA+NznPseoUaM44YQTOPbYY7n88svZvHkz559/PkcddRSjRo3ikksu4ZRTTqnlV9U05pfUPTOsuMjMymaMGAQ8BtyQmQ9ExMHAeiCBLwPDM/Ozu1pGe3t7dnR01FhyL1Npw9KITx/dvXYfGGBt2bJlHHPMMc0uQzvoar1ExOLMbG9SSVtrML96gXmLVhd+ztSxIxpQSeOZYa2naH5VtAcqIgYA9wNzM/MBgMx8NTO3ZOa7wHeArttESWoi80tSI+z2GKgoHb11O7AsM/++0/Th5eMLAM4HXmhMiVLfdNVVV/HEE09sN23WrFl1O5BT5pfUSHt6hlVyFt44YBrwfEQsKU/7IjAlIsZQ2gW+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\n",
      "text/plain": [
       "<Figure size 720x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建1行2列，大小为10X4 的画布\n",
    "fig, axes = plt.subplots(nrows =1 ,ncols = 2 ,figsize =(10,4))\n",
    "#也可以fig, axes = plt.subplots(1,2 ,figsize =(10,4))\n",
    "\n",
    "# 选取数据 \n",
    "women = df_or[df_or[\"Sex\"]==\"female\"]\n",
    "men = df_or[df_or[\"Sex\"]==\"male\"]\n",
    "\n",
    "# 在画布第1列绘制男性幸存与否直方图\n",
    "ax = sns.distplot(men[men[\"Survived\"]==1].Age.dropna(), \n",
    "                  #color=\"g\",#可以自定义颜色\n",
    "                  bins=18, label = \"Survived\", ax = axes[0], kde =False)\n",
    "\n",
    "ax = sns.distplot(men[men[\"Survived\"]==0].Age.dropna(), \n",
    "                  bins=40, label = \"Not_survived\", ax = axes[0], kde =False)\n",
    "\n",
    "# 添加图例和标题\n",
    "ax.legend()\n",
    "ax.set_title(\"Male\")\n",
    "\n",
    "\n",
    "# 在画布第2列绘制女性幸存与否直方图\n",
    "_ax = sns.distplot(women[women[\"Survived\"]==1].Age.dropna(), \n",
    "                  #color=\"g\",\n",
    "                  bins=18, label = \"Survived\", ax = axes[1], kde =False)\n",
    "\n",
    "_ax = sns.distplot(women[women[\"Survived\"]==0].Age.dropna(), \n",
    "                  bins=40, label = \"Not_survived\", ax = axes[1], kde =False)\n",
    "# 添加图例和标题\n",
    "_ax.legend()\n",
    "_ax.set_title(\"Female\")\n",
    "\n",
    "# 保存图片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "16b7130c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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X36Z5cuXb7u/ZMkSjjjiCNra2li8eDEA999//y6XMWnSJP72b/+W119/ndGjR+/0+KBBgzjxxBOZNWsWn/jEJ+jXrx/7778/I0eO5L777gNKo+j++te/BmDcuHHMnz8fgLlz59blfUrqe8yv2rkHSn1CM87E2bRpE5///Of5wx/+QP/+/Xnf+97H7NmzWbZsGZdddhlf+tKXth2A2Z0LLriAWbNm8aUvfanbeSZNmsSFF17IP//zP2+bNnfuXK644gq+8pWv8M477zB58mQ+9KEPccsttzB16lRuvPFGzjvvvDq9U0mN1tMZZn7VLjKzx16svb09Ozo6euz1WkJXwxh0xaENClm2bBnHHHNMs8vQDrpaLxGxODPbu3lKr7FH5lcP25OGMTDDWk/R/PIrPEmSpIJsoCRJkgqygZIkSSrIBkqSJKkgGyhJkqSCbKAkSZIKchwo9Q2VDhdRKYeVkNSTzLBexz1QUpUigmuuuWbb/Ztuuonrr79+l8/54Q9/yNKlSxtcWddOPfXUuiznM5/5zLZrYEnqvcyw2thASVXae++9eeCBB1i/fn3Fz2lk+GTmtmtYdeXJJ59syOtK6p3MsNrYQElV6t+/PzNmzODmm2/e6bFVq1YxYcIERo8ezRlnnMHq1at58skneeihh7j22msZM2YMK1as6HK53/jGNxg1ahSjR49m8uTJAFx//fXcdNNN2+Y59thjWbVqFatWreLoo4/mkksu4dhjj+XLX/4y11577bb55syZw8yZM4HSdakAJk+ezE9+8pNt82z9NLZlyxauvfZaTjzxREaPHs1tt90GlEJt5syZHH300Zx55pmsW7euxt+cpFZghtXGBkqqwVVXXcXcuXN5/fXXt5v++c9/nunTp/Pcc89x8cUXc/XVV3PqqacyceJEvva1r7FkyRKOPPLILpf51a9+lWeffZbnnnuuyyuc72j58uVceeWVvPjii1x55ZU8+OCD2x679957twXYVpMmTWLBggUAvP322zzyyCN8/OMf5/bbb+eAAw7g6aef5umnn+Y73/kOK1eu5MEHH+Tll19m6dKl3HXXXS33KVBS9cyw6u22gYqIwyPi0YhYGhEvRsSs8vTrI+J3EbGk/POxulQk9SL7778/l1xyCd/4xje2m/7UU08xdepUAKZNm8Yvf/nLipc5evRoLr74Yr7//e/Tv//uz/M44ogjOPnkkwEYNmwY733ve/nVr37Fhg0beOmllxg3btx285977rk8+uij/PGPf+Qf//EfOf3009lnn334+c9/zl133cWYMWMYO3YsGzZsYPny5Tz++ONMmTKFfv36ccghhzBhwoSK30uzmV/Srplh1avkLLzNwDWZ+UxE7AcsjoiHy4/dnJk37eK5Up/3hS98gRNOOIFLL63PWS8/+clPePzxx/nxj3/MDTfcwPPPP0///v23Ozbgrbfe2nZ733333e75kydPZsGCBXzgAx/g/PPPJyK2e3zgwIGMHz+en/3sZ9t9ustMbr31Vs4+++zt5v/pT39al/fVJOaXtBtmWHV220Bl5lpgbfn2GxGxDDi0IdVI1WriKbuDBw/moosu4vbbb+ezn/0sUDpbZP78+UybNo25c+fykY98BID99tuPN954o9tlvfvuu7zyyit89KMf5bTTTmP+/Pls2rSJtrY2Fi5cCMAzzzzDypUru13G+eefzw033MCzzz7LjTfe2OU8kyZN4rvf/S4dHR3MmTMHgLPPPptvf/vbTJgwgQEDBvCb3/yGQw89lNNPP53bbruN6dOns27dOh599NFtn0xbnfmlXsMM26a3ZFihY6Aiog04HlhUnjQzIp6LiO9FxEHdPGdGRHRERMdrr71WW7UqpuOOrn9Ud9dcc812Z7Lceuut3HHHHYwePZq7776bW265BSh9svra177G8ccf3+UBmFu2bOHTn/40xx13HMcffzxXX301Bx54IJ/61KfYuHEjH/zgB/nmN7/J+9///m5rOeiggzjmmGP47W9/y0knndTlPGeddRaPPfYYZ555Ju95z3sA+NznPseoUaM44YQTOPbYY7n88svZvHkz559/PkcddRSjRo3ikksu4ZRTTqnlV9U05pfUPTOsuMjMymaMGAQ8BtyQmQ9ExMHAeiCBLwPDM/Ozu1pGe3t7dnR01FhyL1Npw9KITx/dvXYfGGBt2bJlHHPMMc0uQzvoar1ExOLMbG9SSVtrML96gXmLVhd+ztSxIxpQSeOZYa2naH5VtAcqIgYA9wNzM/MBgMx8NTO3ZOa7wHeArttESWoi80tSI+z2GKgoHb11O7AsM/++0/Th5eMLAM4HXmhMiVLfdNVVV/HEE09sN23WrFl1O5BT5pfUSHt6hlVyFt44YBrwfEQsKU/7IjAlIsZQ2gW+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\n",
      "text/plain": [
       "<Figure size 720x288 with 2 Axes>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "67839bb7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matplotlib.figure.Figure"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(fig)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "7c1a9351",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "module"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(plt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29c20eb4",
   "metadata": {},
   "source": [
    "#### 客舱登记+登船港口"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "a02ac255",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.FacetGrid at 0x12907e06520>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABNAAAAE8CAYAAAABjEy7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABpnUlEQVR4nO3dd3hU1drG4d/KpCf0IoGEIlVBFAhgpSgKotISQEFsYDmf9dgb9o4Nuwg2xEIvNjwoIKJSpAkoihAIISAd0jPJ+v6YIQZMQoBM9mTy3NeVi5m99+x5x8E15Jl3r2WstYiIiIiIiIiIiEjRgpwuQERERERERERExJ8pQBMRERERERERESmBAjQREREREREREZESKEATEREREREREREpgQI0ERERERERERGREihAExERERERERERKYECNKl0jDF5xpgVhX7uPYrHdjPGfH6czz/PGBN/jI993xiTeJzPH2SMecUYs9oY86sxZokxpsnxnFNExAmVfTz3nqeFMeZLY8yfxphlxpiJxpgTjve8IiLlSeM5GGNaG2O+M8asM8b8ZYx51Bij39dF/Eiw0wWIOCDTWnuaE09sjHE58byHGQzUB9paa/ONMbFAusM1iYgci0o9nhtjwoEvgNuttbO827oBdYDtzlUmInLUKvt4HgHMBP5jrf3GGBMJTAFuBV5ytDgRKaBEW8TLGJNkjHna+63XUmNMe2PMbO83QDcUOrSqMeYL77dDbx38ZsgY86b3cWuMMY8edt5njTHLgIGFtgd5v7F6whjjMsaM8naDrTLGXO89xhhjXvM+1xygbhm81Bgg1VqbD2Ct3WKt3VMG5xUR8QuVaDwfAvx0MDwDsNbOs9auLoNzi4g4rpKN5wuttd8AWGszgJuAu8rg3CJSRtSBJpVRhDFmRaH7T1trP/Pe3mytPc0Y8xLwPnAWEA6sBt7yHtMJOBnYBHwNDAAmAw9Ya3d7v8X61hjT1lq7yvuYXdba9gDeD/tgYAKw2lr7pDHmOmCftbajMSYMWGiM+QZoB7T0Pt8JwFrg3cNfkDHmLmBoEa/1e2vtLYdtmwj8YIw5B/gW+Mhau/wI/81ERPxRZR/P2wC/HPG/koiI/6vs43lrDhvPrbV/GWMijDHVrbV7i/7PJiLlSQGaVEYltYjP9P75KxBtrT0AHDDGZBtjqnv3LbbWbgAwxnwCnI3nA3qQ94M2GE+X18nAwQ/og/8AOOhtYKK19knv/QuAtuaf+ROqAc2BLsAn1to8YKsx5ruiirbWjgJGHfGVe47dYoxpCZzr/fnWGDPQWvttaR4vIuJHKvV4LiISQDSei4jfU4Amcqhs75/5hW4fvH/w/xd72GOs8UzCfyfQ0Vq7xxjzPp5vxg46fI6xH4HuxpgXrLVZgAFuttbOLnyQMaZ3aYo+ym+4sNZmA18BXxljtgP98HSjiYgEisownq8BupbmvCIiFVhlGM/X4gnmCj/+RDxdcntL83wi4nuaA03k6HUyxjTxzq0wGPgBqIrnQ3if8ax+duERzjEO+BKYaIwJBmYD/zHGhEDBqmpRwPfAYO8cDDFA96JOZq0dZa09rYiff4Vn3rkj6ntvBwFt8bS7i4hUNhV6PAc+Bs40xlx0cIMxposxps3R/EcQEQkAFX08nwCcbYzp4X2uCOAV4OGj+88gIr6kDjSpjA6fY+Fra22pl8oGlgCvAc2AucA072qWy4HfgWRg4ZFOYq190RhTDRiP59upxsAyY4wBduDpCpuG5zLLtcBm4KejqLM4dYF3vHM5ACz2vh4RkYqmUo/n1tpMY8zFwMvGmJeBXDyXJt16vOcWESlnGs+N6QO8aox5A2gAPGGtnXC85xaRsmOsPbzbVUREREREREScYIzpB7wIdLfW6koRET+hAE1ERERERERERKQEmgNNRERERERERESkBArQRERERERERERESqAATUREREREREREpAQVbhXOXr162a+//trpMkRE5B/mWB+oMV1ExO8c05iu8VxExC8d87/T5d8qXAfazp07nS5BRETKiMZ0EZHAoPFcREQCXYUL0ERERERERERERMqTAjQREREREREREZESKEATEREREREREREpgQI0ERERERERERGREihAExERERERERERKYECNBERERERERERkRIEO12AiIiISEXkdruZNn0mkyZPIXXbNmLq1WNgYgID+vfF5XI5XZ6IlDF3Xj5Tl6Xw2dJkUvdmElM9gsHxcSR0iMUVZJwuT46D3lsRKQ2fBWjGmHeBi4G/rbVtithvgNFAbyADuMpau8xX9YiIiIiUFbfbza3/vYPZ38wp2Jaauo1ly1cwb/58Rr/0AsHB+p5SJFC48/K56ePlfL1mW8G2rfuy+GXTHr77/W9eG9KOYJcu7qmI9N6K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\n",
      "text/plain": [
       "<Figure size 1236.9x324 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "FacetGrid = sns.FacetGrid(df_or, col=\"Embarked\", \n",
    "                          # row = \"Embarked\"则图片纵向排列，\n",
    "                          height=4.5, #高度\n",
    "                          aspect=1.2  #长宽比 \n",
    "                         )\n",
    "\n",
    "FacetGrid.map(sns.pointplot, \"Pclass\", \"Survived\", \"Sex\", \n",
    "              palette=None,  #调色板\n",
    "              order=None, \n",
    "              hue_order=None \n",
    "               )\n",
    "# 添加图例\n",
    "FacetGrid.add_legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fdd2473",
   "metadata": {},
   "source": [
    "### 生存预测（机器学习入门）\n",
    "\n",
    "> 回归算法：什么样的人在泰坦尼克号中更容易存活"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3e235dea",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集      PassengerId  Survived  Pclass  \\\n",
      "0              1         0       3   \n",
      "1              2         1       1   \n",
      "2              3         1       3   \n",
      "3              4         1       1   \n",
      "4              5         0       3   \n",
      "..           ...       ...     ...   \n",
      "886          887         0       2   \n",
      "887          888         1       1   \n",
      "888          889         0       3   \n",
      "889          890         1       1   \n",
      "890          891         0       3   \n",
      "\n",
      "                                                  Name     Sex   Age  SibSp  \\\n",
      "0                              Braund, Mr. Owen Harris    male  22.0      1   \n",
      "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
      "2                               Heikkinen, Miss. Laina  female  26.0      0   \n",
      "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
      "4                             Allen, Mr. William Henry    male  35.0      0   \n",
      "..                                                 ...     ...   ...    ...   \n",
      "886                              Montvila, Rev. Juozas    male  27.0      0   \n",
      "887                       Graham, Miss. Margaret Edith  female  19.0      0   \n",
      "888           Johnston, Miss. Catherine Helen \"Carrie\"  female   NaN      1   \n",
      "889                              Behr, Mr. Karl Howell    male  26.0      0   \n",
      "890                                Dooley, Mr. Patrick    male  32.0      0   \n",
      "\n",
      "     Parch            Ticket     Fare Cabin Embarked  \n",
      "0        0         A/5 21171   7.2500   NaN        S  \n",
      "1        0          PC 17599  71.2833   C85        C  \n",
      "2        0  STON/O2. 3101282   7.9250   NaN        S  \n",
      "3        0            113803  53.1000  C123        S  \n",
      "4        0            373450   8.0500   NaN        S  \n",
      "..     ...               ...      ...   ...      ...  \n",
      "886      0            211536  13.0000   NaN        S  \n",
      "887      0            112053  30.0000   B42        S  \n",
      "888      2        W./C. 6607  23.4500   NaN        S  \n",
      "889      0            111369  30.0000  C148        C  \n",
      "890      0            370376   7.7500   NaN        Q  \n",
      "\n",
      "[891 rows x 12 columns] 测试集      PassengerId  Pclass                                          Name  \\\n",
      "0            892       3                              Kelly, Mr. James   \n",
      "1            893       3              Wilkes, Mrs. James (Ellen Needs)   \n",
      "2            894       2                     Myles, Mr. Thomas Francis   \n",
      "3            895       3                              Wirz, Mr. Albert   \n",
      "4            896       3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)   \n",
      "..           ...     ...                                           ...   \n",
      "413         1305       3                            Spector, Mr. Woolf   \n",
      "414         1306       1                  Oliva y Ocana, Dona. Fermina   \n",
      "415         1307       3                  Saether, Mr. Simon Sivertsen   \n",
      "416         1308       3                           Ware, Mr. Frederick   \n",
      "417         1309       3                      Peter, Master. Michael J   \n",
      "\n",
      "        Sex   Age  SibSp  Parch              Ticket      Fare Cabin Embarked  \n",
      "0      male  34.5      0      0              330911    7.8292   NaN        Q  \n",
      "1    female  47.0      1      0              363272    7.0000   NaN        S  \n",
      "2      male  62.0      0      0              240276    9.6875   NaN        Q  \n",
      "3      male  27.0      0      0              315154    8.6625   NaN        S  \n",
      "4    female  22.0      1      1             3101298   12.2875   NaN        S  \n",
      "..      ...   ...    ...    ...                 ...       ...   ...      ...  \n",
      "413    male   NaN      0      0           A.5. 3236    8.0500   NaN        S  \n",
      "414  female  39.0      0      0            PC 17758  108.9000  C105        C  \n",
      "415    male  38.5      0      0  SOTON/O.Q. 3101262    7.2500   NaN        S  \n",
      "416    male   NaN      0      0              359309    8.0500   NaN        S  \n",
      "417    male   NaN      1      1                2668   22.3583   NaN        C  \n",
      "\n",
      "[418 rows x 11 columns]\n"
     ]
    }
   ],
   "source": [
    "print(\"训练集\",df_or,\"测试集\",df_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "964a4457",
   "metadata": {},
   "source": [
    "#### 合并数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "aa5686e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1309, 12)\n"
     ]
    }
   ],
   "source": [
    "full = df_or.append(df_test,ignore_index=True)\n",
    "print(full.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d636ad8d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1       0.0       3   \n",
       "1            2       1.0       1   \n",
       "2            3       1.0       3   \n",
       "3            4       1.0       1   \n",
       "4            5       0.0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试数据集比训练数据集少一列生存情况，需要我们通过构建模型进行预测的。\n",
    "full.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7146f1d5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1309.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>1309.000000</td>\n",
       "      <td>1046.000000</td>\n",
       "      <td>1309.000000</td>\n",
       "      <td>1309.000000</td>\n",
       "      <td>1308.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>655.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.294882</td>\n",
       "      <td>29.881138</td>\n",
       "      <td>0.498854</td>\n",
       "      <td>0.385027</td>\n",
       "      <td>33.295479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>378.020061</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.837836</td>\n",
       "      <td>14.413493</td>\n",
       "      <td>1.041658</td>\n",
       "      <td>0.865560</td>\n",
       "      <td>51.758668</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.170000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>328.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.895800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>655.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>982.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.275000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1309.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived       Pclass          Age        SibSp  \\\n",
       "count  1309.000000  891.000000  1309.000000  1046.000000  1309.000000   \n",
       "mean    655.000000    0.383838     2.294882    29.881138     0.498854   \n",
       "std     378.020061    0.486592     0.837836    14.413493     1.041658   \n",
       "min       1.000000    0.000000     1.000000     0.170000     0.000000   \n",
       "25%     328.000000    0.000000     2.000000    21.000000     0.000000   \n",
       "50%     655.000000    0.000000     3.000000    28.000000     0.000000   \n",
       "75%     982.000000    1.000000     3.000000    39.000000     1.000000   \n",
       "max    1309.000000    1.000000     3.000000    80.000000     8.000000   \n",
       "\n",
       "             Parch         Fare  \n",
       "count  1309.000000  1308.000000  \n",
       "mean      0.385027    33.295479  \n",
       "std       0.865560    51.758668  \n",
       "min       0.000000     0.000000  \n",
       "25%       0.000000     7.895800  \n",
       "50%       0.000000    14.454200  \n",
       "75%       0.000000    31.275000  \n",
       "max       9.000000   512.329200  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 描述统计信息\n",
    "full.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "49aa2944",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  1309 non-null   int64  \n",
      " 1   Survived     891 non-null    float64\n",
      " 2   Pclass       1309 non-null   int64  \n",
      " 3   Name         1309 non-null   object \n",
      " 4   Sex          1309 non-null   object \n",
      " 5   Age          1046 non-null   float64\n",
      " 6   SibSp        1309 non-null   int64  \n",
      " 7   Parch        1309 non-null   int64  \n",
      " 8   Ticket       1309 non-null   object \n",
      " 9   Fare         1308 non-null   float64\n",
      " 10  Cabin        295 non-null    object \n",
      " 11  Embarked     1307 non-null   object \n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 122.8+ KB\n"
     ]
    }
   ],
   "source": [
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d06aab82",
   "metadata": {},
   "source": [
    "#### 数据清洗2\n",
    "\n",
    "1. 如果是数值类型，用平均值取代\n",
    "2. 如果是分类数据，用最常见的类别取代"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "48f54ab5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "S    914\n",
       "C    270\n",
       "Q    123\n",
       "Name: Embarked, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full['Embarked'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e25f7f5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 用平均值对数值类型缺失值进行填充\n",
    "full['Age'] = full['Age'].fillna(full['Age'].mean())\n",
    "full['Fare'] = full['Fare'].fillna(full['Fare'].mean())\n",
    "\n",
    "full['Embarked'] = full['Embarked'].fillna('S')\n",
    "full['Cabin'] = full['Cabin'].fillna('Unknow')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "dcdcb3cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "Sex_mapDict = {'male':1,'female':0}\n",
    "# map函数对series类型数据应用自定义的计算\n",
    "full['Sex'] = full['Sex'].map(Sex_mapDict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "89275c26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>1</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1       0.0       3   \n",
       "1            2       1.0       1   \n",
       "2            3       1.0       3   \n",
       "3            4       1.0       1   \n",
       "4            5       0.0       3   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    1  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    0  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    0  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    0  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    1  35.0      0      0   \n",
       "\n",
       "             Ticket     Fare   Cabin Embarked  \n",
       "0         A/5 21171   7.2500  Unknow        S  \n",
       "1          PC 17599  71.2833     C85        C  \n",
       "2  STON/O2. 3101282   7.9250  Unknow        S  \n",
       "3            113803  53.1000    C123        S  \n",
       "4            373450   8.0500  Unknow        S  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ceece952",
   "metadata": {},
   "source": [
    "#### 用数据框的get-dummies( )对登船港口进行one-hot编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "1185df3d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Embarked_C  Embarked_Q  Embarked_S\n",
       "0           0           0           1\n",
       "1           1           0           0\n",
       "2           0           0           1\n",
       "3           0           0           1\n",
       "4           0           0           1"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "embarkedDf = pd.DataFrame()\n",
    "embarkedDf = pd.get_dummies(full['Embarked'],prefix='Embarked')\n",
    "embarkedDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d44f946d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>1</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>Unknow</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1       0.0       3   \n",
       "1            2       1.0       1   \n",
       "2            3       1.0       3   \n",
       "3            4       1.0       1   \n",
       "4            5       0.0       3   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    1  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    0  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    0  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    0  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    1  35.0      0      0   \n",
       "\n",
       "             Ticket     Fare   Cabin  Embarked_C  Embarked_Q  Embarked_S  \n",
       "0         A/5 21171   7.2500  Unknow           0           0           1  \n",
       "1          PC 17599  71.2833     C85           1           0           0  \n",
       "2  STON/O2. 3101282   7.9250  Unknow           0           0           1  \n",
       "3            113803  53.1000    C123           0           0           1  \n",
       "4            373450   8.0500  Unknow           0           0           1  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full = pd.concat([full,embarkedDf],axis=1)\n",
    "full.drop('Embarked',axis=1,inplace=True)\n",
    "full.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "4931f76f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pclass_1  Pclass_2  Pclass_3\n",
       "0         0         0         1\n",
       "1         1         0         0\n",
       "2         0         0         1\n",
       "3         1         0         0\n",
       "4         0         0         1"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pclassDf = pd.DataFrame()\n",
    "pclassDf = pd.get_dummies(full['Pclass'],prefix='Pclass')\n",
    "pclassDf.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3207cf68",
   "metadata": {},
   "source": [
    "#### 乘客每个名字当中都包含了具体的称谓或者说是头衔，将这部分信息提取出来后可以作为非常有用的一个新变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "3cae43ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gettitle(name):\n",
    "    str1 = name.split(',')[1]\n",
    "    str2 = str1.split('.')[0]\n",
    "    str3 = str2.strip() #移除头尾指定字符，默认空格\n",
    "    return str3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "f87d395a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Miss</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  title\n",
       "0    Mr\n",
       "1   Mrs\n",
       "2  Miss\n",
       "3   Mrs\n",
       "4    Mr"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titleDf = pd.DataFrame()\n",
    "titleDf['title'] = full['Name'].map(gettitle)\n",
    "titleDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "08636041",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mr              757\n",
       "Miss            260\n",
       "Mrs             197\n",
       "Master           61\n",
       "Rev               8\n",
       "Dr                8\n",
       "Col               4\n",
       "Major             2\n",
       "Ms                2\n",
       "Mlle              2\n",
       "Dona              1\n",
       "Jonkheer          1\n",
       "Capt              1\n",
       "Don               1\n",
       "the Countess      1\n",
       "Mme               1\n",
       "Sir               1\n",
       "Lady              1\n",
       "Name: title, dtype: int64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titleDf['title'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c796467a",
   "metadata": {},
   "source": [
    "#### 除去不常出现的头衔归纳于主要6类头衔中\n",
    "> Officer，Royalty，Mrs，Miss，Mr，Master"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "f4d09df9",
   "metadata": {},
   "outputs": [],
   "source": [
    "Title_mapDict = {\n",
    "    \"capt\":\"Officer\",\n",
    "    \"Col\":\"Officer\",\n",
    "    \"Major\":\"officer\",\n",
    "    \"Jonkheer\":\"Royalty\",\n",
    "    \"Don\":\"Royalty\",\n",
    "    \"Sir\":\"Royalty\",\n",
    "    \"Dr\":\"Officer\",\n",
    "    \"Rev\":\"Officer\",\n",
    "    \"the Countess\":\"Royalty\",\n",
    "    \"Dona\":\"Royalty\",\n",
    "    \"Mme\":\"Mrs\",\n",
    "    \"Mlle\":\"Miss\",\n",
    "    \"Ms\":\"Mrs\",\n",
    "    \"Mr\":\"Mr\",\n",
    "    \"Mrs\":\"Mrs\",\n",
    "    \"Miss\":\"Miss\",\n",
    "    \"Master\":\"Master\",\n",
    "    \"Lady\":\"Royalty\"\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "cb1aea1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "titleDf[\"title\"] = titleDf['title'].map(Title_mapDict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "096c29bb",
   "metadata": {},
   "outputs": [],
   "source": [
    "titleDf = pd.get_dummies(titleDf['title'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "e51ea50b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Master</th>\n",
       "      <th>Miss</th>\n",
       "      <th>Mr</th>\n",
       "      <th>Mrs</th>\n",
       "      <th>Officer</th>\n",
       "      <th>Royalty</th>\n",
       "      <th>officer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Master  Miss  Mr  Mrs  Officer  Royalty  officer\n",
       "0       0     0   1    0        0        0        0\n",
       "1       0     0   0    1        0        0        0\n",
       "2       0     1   0    0        0        0        0\n",
       "3       0     0   0    1        0        0        0\n",
       "4       0     0   1    0        0        0        0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titleDf.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0a2bc89",
   "metadata": {},
   "source": [
    "#### 船舱号Cabin，删除原Cabin列，将新数据合并至full"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "82f89a55",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    Unknow\n",
       "1       C85\n",
       "2    Unknow\n",
       "3      C123\n",
       "4    Unknow\n",
       "Name: Cabin, dtype: object"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full['Cabin'].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "0e832dca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cabin_A</th>\n",
       "      <th>Cabin_B</th>\n",
       "      <th>Cabin_C</th>\n",
       "      <th>Cabin_D</th>\n",
       "      <th>Cabin_E</th>\n",
       "      <th>Cabin_F</th>\n",
       "      <th>Cabin_G</th>\n",
       "      <th>Cabin_T</th>\n",
       "      <th>Cabin_U</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Cabin_A  Cabin_B  Cabin_C  Cabin_D  Cabin_E  Cabin_F  Cabin_G  Cabin_T  \\\n",
       "0        0        0        0        0        0        0        0        0   \n",
       "1        0        0        1        0        0        0        0        0   \n",
       "2        0        0        0        0        0        0        0        0   \n",
       "3        0        0        1        0        0        0        0        0   \n",
       "4        0        0        0        0        0        0        0        0   \n",
       "\n",
       "   Cabin_U  \n",
       "0        1  \n",
       "1        0  \n",
       "2        1  \n",
       "3        0  \n",
       "4        1  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full['Cabin'] = full['Cabin'].map(lambda c:c[0])\n",
    "\n",
    "cabinDf = pd.DataFrame()\n",
    "cabinDf = pd.get_dummies(full['Cabin'],prefix='Cabin')\n",
    "cabinDf.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2bd9c6e8",
   "metadata": {},
   "source": [
    "#### 家庭数据Parch、Sibsp\n",
    "对于家庭数据选择计算家庭人数的方法提取特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "37d16697",
   "metadata": {},
   "outputs": [],
   "source": [
    "familyDf = pd.DataFrame()\n",
    "familyDf['Family_Size'] = full['SibSp'] + full['Parch'] + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "4c1edcdc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>Family_Single</th>\n",
       "      <th>Family_small</th>\n",
       "      <th>Family_large</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Family_Size  Family_Single  Family_small  Family_large\n",
       "0            2              0             1             0\n",
       "1            2              0             1             0\n",
       "2            1              1             0             0\n",
       "3            2              0             1             0\n",
       "4            1              1             0             0"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "familyDf['Family_Single'] = familyDf['Family_Size'].map(lambda a:1 if a==1 else 0)\n",
    "familyDf['Family_small'] = familyDf['Family_Size'].map(lambda a:1 if 2<=a<=4 else 0)\n",
    "familyDf['Family_large'] = familyDf['Family_Size'].map(lambda a:1 if 5<=a else 0)\n",
    "familyDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "5efc7df8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>Family_Single</th>\n",
       "      <th>Family_small</th>\n",
       "      <th>Family_large</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>1</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1       0.0       3   \n",
       "1            2       1.0       1   \n",
       "2            3       1.0       3   \n",
       "3            4       1.0       1   \n",
       "4            5       0.0       3   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    1  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    0  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    0  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    0  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    1  35.0      0      0   \n",
       "\n",
       "             Ticket     Fare Cabin  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "0         A/5 21171   7.2500     U           0           0           1   \n",
       "1          PC 17599  71.2833     C           1           0           0   \n",
       "2  STON/O2. 3101282   7.9250     U           0           0           1   \n",
       "3            113803  53.1000     C           0           0           1   \n",
       "4            373450   8.0500     U           0           0           1   \n",
       "\n",
       "   Family_Size  Family_Single  Family_small  Family_large  \n",
       "0            2              0             1             0  \n",
       "1            2              0             1             0  \n",
       "2            1              1             0             0  \n",
       "3            2              0             1             0  \n",
       "4            1              1             0             0  "
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full = pd.concat([full,familyDf],axis=1)\n",
    "full.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74d6fbf0",
   "metadata": {},
   "source": [
    "#### 对以上所有特征进行选择\n",
    "> 用corr()生成相关系数矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "02c31c99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>Family_Single</th>\n",
       "      <th>Family_small</th>\n",
       "      <th>Family_large</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>PassengerId</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.005007</td>\n",
       "      <td>-0.038354</td>\n",
       "      <td>0.013406</td>\n",
       "      <td>0.025731</td>\n",
       "      <td>-0.055224</td>\n",
       "      <td>0.008942</td>\n",
       "      <td>0.031416</td>\n",
       "      <td>0.048101</td>\n",
       "      <td>0.011585</td>\n",
       "      <td>-0.049836</td>\n",
       "      <td>-0.031437</td>\n",
       "      <td>0.028546</td>\n",
       "      <td>0.002975</td>\n",
       "      <td>-0.063415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Survived</th>\n",
       "      <td>-0.005007</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>-0.543351</td>\n",
       "      <td>-0.070323</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>0.168240</td>\n",
       "      <td>0.003650</td>\n",
       "      <td>-0.149683</td>\n",
       "      <td>0.016639</td>\n",
       "      <td>-0.203367</td>\n",
       "      <td>0.279855</td>\n",
       "      <td>-0.125147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <td>-0.038354</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.124617</td>\n",
       "      <td>-0.366371</td>\n",
       "      <td>0.060832</td>\n",
       "      <td>0.018322</td>\n",
       "      <td>-0.558477</td>\n",
       "      <td>-0.269658</td>\n",
       "      <td>0.230491</td>\n",
       "      <td>0.091320</td>\n",
       "      <td>0.050027</td>\n",
       "      <td>0.147393</td>\n",
       "      <td>-0.218303</td>\n",
       "      <td>0.127306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex</th>\n",
       "      <td>0.013406</td>\n",
       "      <td>-0.543351</td>\n",
       "      <td>0.124617</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.057397</td>\n",
       "      <td>-0.109609</td>\n",
       "      <td>-0.213125</td>\n",
       "      <td>-0.185484</td>\n",
       "      <td>-0.066564</td>\n",
       "      <td>-0.088651</td>\n",
       "      <td>0.115193</td>\n",
       "      <td>-0.188583</td>\n",
       "      <td>0.284537</td>\n",
       "      <td>-0.255196</td>\n",
       "      <td>-0.077748</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>0.025731</td>\n",
       "      <td>-0.070323</td>\n",
       "      <td>-0.366371</td>\n",
       "      <td>0.057397</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.190747</td>\n",
       "      <td>-0.130872</td>\n",
       "      <td>0.171521</td>\n",
       "      <td>0.076179</td>\n",
       "      <td>-0.012718</td>\n",
       "      <td>-0.059153</td>\n",
       "      <td>-0.196996</td>\n",
       "      <td>0.116675</td>\n",
       "      <td>-0.038189</td>\n",
       "      <td>-0.161210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>-0.055224</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>0.060832</td>\n",
       "      <td>-0.109609</td>\n",
       "      <td>-0.190747</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.373587</td>\n",
       "      <td>0.160224</td>\n",
       "      <td>-0.048396</td>\n",
       "      <td>-0.048678</td>\n",
       "      <td>0.073709</td>\n",
       "      <td>0.861952</td>\n",
       "      <td>-0.591077</td>\n",
       "      <td>0.253590</td>\n",
       "      <td>0.699681</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>0.008942</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>0.018322</td>\n",
       "      <td>-0.213125</td>\n",
       "      <td>-0.130872</td>\n",
       "      <td>0.373587</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.221522</td>\n",
       "      <td>-0.008635</td>\n",
       "      <td>-0.100943</td>\n",
       "      <td>0.071881</td>\n",
       "      <td>0.792296</td>\n",
       "      <td>-0.549022</td>\n",
       "      <td>0.248532</td>\n",
       "      <td>0.624627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.031416</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>-0.558477</td>\n",
       "      <td>-0.185484</td>\n",
       "      <td>0.171521</td>\n",
       "      <td>0.160224</td>\n",
       "      <td>0.221522</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.286241</td>\n",
       "      <td>-0.130054</td>\n",
       "      <td>-0.169894</td>\n",
       "      <td>0.226465</td>\n",
       "      <td>-0.274826</td>\n",
       "      <td>0.197281</td>\n",
       "      <td>0.170853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_C</th>\n",
       "      <td>0.048101</td>\n",
       "      <td>0.168240</td>\n",
       "      <td>-0.269658</td>\n",
       "      <td>-0.066564</td>\n",
       "      <td>0.076179</td>\n",
       "      <td>-0.048396</td>\n",
       "      <td>-0.008635</td>\n",
       "      <td>0.286241</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.164166</td>\n",
       "      <td>-0.778262</td>\n",
       "      <td>-0.036553</td>\n",
       "      <td>-0.107874</td>\n",
       "      <td>0.159594</td>\n",
       "      <td>-0.092825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_Q</th>\n",
       "      <td>0.011585</td>\n",
       "      <td>0.003650</td>\n",
       "      <td>0.230491</td>\n",
       "      <td>-0.088651</td>\n",
       "      <td>-0.012718</td>\n",
       "      <td>-0.048678</td>\n",
       "      <td>-0.100943</td>\n",
       "      <td>-0.130054</td>\n",
       "      <td>-0.164166</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.491656</td>\n",
       "      <td>-0.087190</td>\n",
       "      <td>0.127214</td>\n",
       "      <td>-0.122491</td>\n",
       "      <td>-0.018423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_S</th>\n",
       "      <td>-0.049836</td>\n",
       "      <td>-0.149683</td>\n",
       "      <td>0.091320</td>\n",
       "      <td>0.115193</td>\n",
       "      <td>-0.059153</td>\n",
       "      <td>0.073709</td>\n",
       "      <td>0.071881</td>\n",
       "      <td>-0.169894</td>\n",
       "      <td>-0.778262</td>\n",
       "      <td>-0.491656</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.087771</td>\n",
       "      <td>0.014246</td>\n",
       "      <td>-0.062909</td>\n",
       "      <td>0.093671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_Size</th>\n",
       "      <td>-0.031437</td>\n",
       "      <td>0.016639</td>\n",
       "      <td>0.050027</td>\n",
       "      <td>-0.188583</td>\n",
       "      <td>-0.196996</td>\n",
       "      <td>0.861952</td>\n",
       "      <td>0.792296</td>\n",
       "      <td>0.226465</td>\n",
       "      <td>-0.036553</td>\n",
       "      <td>-0.087190</td>\n",
       "      <td>0.087771</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.688864</td>\n",
       "      <td>0.302640</td>\n",
       "      <td>0.801623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_Single</th>\n",
       "      <td>0.028546</td>\n",
       "      <td>-0.203367</td>\n",
       "      <td>0.147393</td>\n",
       "      <td>0.284537</td>\n",
       "      <td>0.116675</td>\n",
       "      <td>-0.591077</td>\n",
       "      <td>-0.549022</td>\n",
       "      <td>-0.274826</td>\n",
       "      <td>-0.107874</td>\n",
       "      <td>0.127214</td>\n",
       "      <td>0.014246</td>\n",
       "      <td>-0.688864</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.873398</td>\n",
       "      <td>-0.318944</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_small</th>\n",
       "      <td>0.002975</td>\n",
       "      <td>0.279855</td>\n",
       "      <td>-0.218303</td>\n",
       "      <td>-0.255196</td>\n",
       "      <td>-0.038189</td>\n",
       "      <td>0.253590</td>\n",
       "      <td>0.248532</td>\n",
       "      <td>0.197281</td>\n",
       "      <td>0.159594</td>\n",
       "      <td>-0.122491</td>\n",
       "      <td>-0.062909</td>\n",
       "      <td>0.302640</td>\n",
       "      <td>-0.873398</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.183007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_large</th>\n",
       "      <td>-0.063415</td>\n",
       "      <td>-0.125147</td>\n",
       "      <td>0.127306</td>\n",
       "      <td>-0.077748</td>\n",
       "      <td>-0.161210</td>\n",
       "      <td>0.699681</td>\n",
       "      <td>0.624627</td>\n",
       "      <td>0.170853</td>\n",
       "      <td>-0.092825</td>\n",
       "      <td>-0.018423</td>\n",
       "      <td>0.093671</td>\n",
       "      <td>0.801623</td>\n",
       "      <td>-0.318944</td>\n",
       "      <td>-0.183007</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               PassengerId  Survived    Pclass       Sex       Age     SibSp  \\\n",
       "PassengerId       1.000000 -0.005007 -0.038354  0.013406  0.025731 -0.055224   \n",
       "Survived         -0.005007  1.000000 -0.338481 -0.543351 -0.070323 -0.035322   \n",
       "Pclass           -0.038354 -0.338481  1.000000  0.124617 -0.366371  0.060832   \n",
       "Sex               0.013406 -0.543351  0.124617  1.000000  0.057397 -0.109609   \n",
       "Age               0.025731 -0.070323 -0.366371  0.057397  1.000000 -0.190747   \n",
       "SibSp            -0.055224 -0.035322  0.060832 -0.109609 -0.190747  1.000000   \n",
       "Parch             0.008942  0.081629  0.018322 -0.213125 -0.130872  0.373587   \n",
       "Fare              0.031416  0.257307 -0.558477 -0.185484  0.171521  0.160224   \n",
       "Embarked_C        0.048101  0.168240 -0.269658 -0.066564  0.076179 -0.048396   \n",
       "Embarked_Q        0.011585  0.003650  0.230491 -0.088651 -0.012718 -0.048678   \n",
       "Embarked_S       -0.049836 -0.149683  0.091320  0.115193 -0.059153  0.073709   \n",
       "Family_Size      -0.031437  0.016639  0.050027 -0.188583 -0.196996  0.861952   \n",
       "Family_Single     0.028546 -0.203367  0.147393  0.284537  0.116675 -0.591077   \n",
       "Family_small      0.002975  0.279855 -0.218303 -0.255196 -0.038189  0.253590   \n",
       "Family_large     -0.063415 -0.125147  0.127306 -0.077748 -0.161210  0.699681   \n",
       "\n",
       "                  Parch      Fare  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "PassengerId    0.008942  0.031416    0.048101    0.011585   -0.049836   \n",
       "Survived       0.081629  0.257307    0.168240    0.003650   -0.149683   \n",
       "Pclass         0.018322 -0.558477   -0.269658    0.230491    0.091320   \n",
       "Sex           -0.213125 -0.185484   -0.066564   -0.088651    0.115193   \n",
       "Age           -0.130872  0.171521    0.076179   -0.012718   -0.059153   \n",
       "SibSp          0.373587  0.160224   -0.048396   -0.048678    0.073709   \n",
       "Parch          1.000000  0.221522   -0.008635   -0.100943    0.071881   \n",
       "Fare           0.221522  1.000000    0.286241   -0.130054   -0.169894   \n",
       "Embarked_C    -0.008635  0.286241    1.000000   -0.164166   -0.778262   \n",
       "Embarked_Q    -0.100943 -0.130054   -0.164166    1.000000   -0.491656   \n",
       "Embarked_S     0.071881 -0.169894   -0.778262   -0.491656    1.000000   \n",
       "Family_Size    0.792296  0.226465   -0.036553   -0.087190    0.087771   \n",
       "Family_Single -0.549022 -0.274826   -0.107874    0.127214    0.014246   \n",
       "Family_small   0.248532  0.197281    0.159594   -0.122491   -0.062909   \n",
       "Family_large   0.624627  0.170853   -0.092825   -0.018423    0.093671   \n",
       "\n",
       "               Family_Size  Family_Single  Family_small  Family_large  \n",
       "PassengerId      -0.031437       0.028546      0.002975     -0.063415  \n",
       "Survived          0.016639      -0.203367      0.279855     -0.125147  \n",
       "Pclass            0.050027       0.147393     -0.218303      0.127306  \n",
       "Sex              -0.188583       0.284537     -0.255196     -0.077748  \n",
       "Age              -0.196996       0.116675     -0.038189     -0.161210  \n",
       "SibSp             0.861952      -0.591077      0.253590      0.699681  \n",
       "Parch             0.792296      -0.549022      0.248532      0.624627  \n",
       "Fare              0.226465      -0.274826      0.197281      0.170853  \n",
       "Embarked_C       -0.036553      -0.107874      0.159594     -0.092825  \n",
       "Embarked_Q       -0.087190       0.127214     -0.122491     -0.018423  \n",
       "Embarked_S        0.087771       0.014246     -0.062909      0.093671  \n",
       "Family_Size       1.000000      -0.688864      0.302640      0.801623  \n",
       "Family_Single    -0.688864       1.000000     -0.873398     -0.318944  \n",
       "Family_small      0.302640      -0.873398      1.000000     -0.183007  \n",
       "Family_large      0.801623      -0.318944     -0.183007      1.000000  "
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corrDf = full.corr()\n",
    "corrDf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48899a7e",
   "metadata": {},
   "source": [
    "#### 查看各个特征与生成情况的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "2d1ecc01",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Survived         1.000000\n",
       "Family_small     0.279855\n",
       "Fare             0.257307\n",
       "Embarked_C       0.168240\n",
       "Parch            0.081629\n",
       "Family_Size      0.016639\n",
       "Embarked_Q       0.003650\n",
       "PassengerId     -0.005007\n",
       "SibSp           -0.035322\n",
       "Age             -0.070323\n",
       "Family_large    -0.125147\n",
       "Embarked_S      -0.149683\n",
       "Family_Single   -0.203367\n",
       "Pclass          -0.338481\n",
       "Sex             -0.543351\n",
       "Name: Survived, dtype: float64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corrDf['Survived'].sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "1c9835a7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Master</th>\n",
       "      <th>Miss</th>\n",
       "      <th>Mr</th>\n",
       "      <th>Mrs</th>\n",
       "      <th>Officer</th>\n",
       "      <th>Royalty</th>\n",
       "      <th>officer</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "      <th>...</th>\n",
       "      <th>Cabin_D</th>\n",
       "      <th>Cabin_E</th>\n",
       "      <th>Cabin_F</th>\n",
       "      <th>Cabin_G</th>\n",
       "      <th>Cabin_T</th>\n",
       "      <th>Cabin_U</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Master  Miss  Mr  Mrs  Officer  Royalty  officer  Pclass_1  Pclass_2  \\\n",
       "0       0     0   1    0        0        0        0         0         0   \n",
       "1       0     0   0    1        0        0        0         1         0   \n",
       "2       0     1   0    0        0        0        0         0         0   \n",
       "3       0     0   0    1        0        0        0         1         0   \n",
       "4       0     0   1    0        0        0        0         0         0   \n",
       "\n",
       "   Pclass_3  ...  Cabin_D  Cabin_E  Cabin_F  Cabin_G  Cabin_T  Cabin_U  \\\n",
       "0         1  ...        0        0        0        0        0        1   \n",
       "1         0  ...        0        0        0        0        0        0   \n",
       "2         1  ...        0        0        0        0        0        1   \n",
       "3         0  ...        0        0        0        0        0        0   \n",
       "4         1  ...        0        0        0        0        0        1   \n",
       "\n",
       "   Embarked_C  Embarked_Q  Embarked_S  Sex  \n",
       "0           0           0           1    1  \n",
       "1           1           0           0    0  \n",
       "2           0           0           1    0  \n",
       "3           0           0           1    0  \n",
       "4           0           0           1    1  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_x = pd.concat([titleDf,pclassDf,familyDf,full['Fare'],cabinDf,embarkedDf,full['Sex']],axis=1)\n",
    "full_x.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab0022be",
   "metadata": {},
   "source": [
    "### 构建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "7f9c7c8a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据集 (891, 28)\n",
      "预测数据集 (418, 28)\n"
     ]
    }
   ],
   "source": [
    "sourceRow = 891\n",
    "source_x = full_x.loc[0:sourceRow-1,:]\n",
    "source_y = full.loc[0:sourceRow-1,'Survived']\n",
    "\n",
    "# 特征预测\n",
    "pre_x = full_x.loc[sourceRow:,:]\n",
    "print('原始数据集',source_x.shape)\n",
    "print('预测数据集',pre_x.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "3c24de76",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: sklearn in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (0.0)\n",
      "Requirement already satisfied: scikit-learn in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (from sklearn) (0.24.2)\n",
      "Requirement already satisfied: numpy>=1.13.3 in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (from scikit-learn->sklearn) (1.19.4)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (from scikit-learn->sklearn) (2.1.0)\n",
      "Requirement already satisfied: scipy>=0.19.1 in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (from scikit-learn->sklearn) (1.6.3)\n",
      "Requirement already satisfied: joblib>=0.11 in c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages (from scikit-learn->sklearn) (1.0.1)\n"
     ]
    }
   ],
   "source": [
    "!pip install sklearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "1a5cb12c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 建立训练与测试集数据\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "a405d250",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据特征 (891, 28) 训练数据特征 (712, 28) 测试数据特征 (179, 28)\n",
      "原始数据标签 (891,) 训练数据标签 (712,) 测试数据标签 (179,)\n"
     ]
    }
   ],
   "source": [
    "train_x,test_x,train_y,test_y = train_test_split(source_x,source_y,train_size=0.8)\n",
    "\n",
    "print(\"原始数据特征\",source_x.shape,\"训练数据特征\",train_x.shape,\"测试数据特征\",test_x.shape)\n",
    "print(\"原始数据标签\",source_y.shape,\"训练数据标签\",train_y.shape,\"测试数据标签\",test_y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "c41313f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.0\n",
       "1    1.0\n",
       "2    1.0\n",
       "3    1.0\n",
       "4    0.0\n",
       "Name: Survived, dtype: float64"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "source_y.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73437792",
   "metadata": {},
   "source": [
    "### 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "02d5f60b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "59de1b14",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\michael\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:763: ConvergenceWarning:\n",
      "\n",
      "lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = LogisticRegression()\n",
    "model.fit(train_x,train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "7e55b668",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8547486033519553"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.score(test_x,test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "cffdebd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "pre_y = model.predict(pre_x)\n",
    "pre_y = pre_y.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "a0912301",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(418, 2)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "passenger_ID = full.loc[sourceRow:,'PassengerId']\n",
    "preDf = pd.DataFrame({\n",
    "    'PassengerId':passenger_ID,\n",
    "    'Survived':pre_y\n",
    "})\n",
    "\n",
    "preDf.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "39c82ea9",
   "metadata": {},
   "outputs": [],
   "source": [
    "preDf.to_csv('Titanic_prd.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "46166abf",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['PassengerId', 'Survived']\n",
      "['892', '0']\n",
      "['893', '1']\n",
      "['894', '0']\n",
      "['895', '0']\n",
      "['896', '1']\n",
      "['897', '0']\n",
      "['898', '1']\n",
      "['899', '0']\n",
      "['900', '1']\n",
      "['901', '0']\n",
      "['902', '0']\n",
      "['903', '0']\n",
      "['904', '1']\n",
      "['905', '0']\n",
      "['906', '1']\n",
      "['907', '1']\n",
      "['908', '0']\n",
      "['909', '0']\n",
      "['910', '1']\n",
      "['911', '1']\n",
      "['912', '0']\n",
      "['913', '1']\n",
      "['914', '1']\n",
      "['915', '0']\n",
      "['916', '1']\n",
      "['917', '0']\n",
      "['918', '1']\n",
      "['919', '0']\n",
      "['920', '0']\n",
      "['921', '0']\n",
      "['922', '0']\n",
      "['923', '0']\n",
      "['924', '1']\n",
      "['925', '1']\n",
      "['926', '0']\n",
      "['927', '0']\n",
      "['928', '1']\n",
      "['929', '1']\n",
      "['930', '0']\n",
      "['931', '0']\n",
      "['932', '0']\n",
      "['933', '0']\n",
      "['934', '0']\n",
      "['935', '1']\n",
      "['936', '1']\n",
      "['937', '0']\n",
      "['938', '0']\n",
      "['939', '0']\n",
      "['940', '1']\n",
      "['941', '1']\n",
      "['942', '0']\n",
      "['943', '0']\n",
      "['944', '1']\n",
      "['945', '1']\n",
      "['946', '0']\n",
      "['947', '0']\n",
      "['948', '0']\n",
      "['949', '0']\n",
      "['950', '0']\n",
      "['951', '1']\n",
      "['952', '0']\n",
      "['953', '0']\n",
      "['954', '0']\n",
      "['955', '1']\n",
      "['956', '1']\n",
      "['957', '1']\n",
      "['958', '1']\n",
      "['959', '0']\n",
      "['960', '0']\n",
      "['961', '1']\n",
      "['962', '1']\n",
      "['963', '0']\n",
      "['964', '1']\n",
      "['965', '1']\n",
      "['966', '1']\n",
      "['967', '1']\n",
      "['968', '0']\n",
      "['969', '1']\n",
      "['970', '0']\n",
      "['971', '1']\n",
      "['972', '1']\n",
      "['973', '1']\n",
      "['974', '0']\n",
      "['975', '0']\n",
      "['976', '0']\n",
      "['977', '0']\n",
      "['978', '1']\n",
      "['979', '1']\n",
      "['980', '1']\n",
      "['981', '1']\n",
      "['982', '1']\n",
      "['983', '0']\n",
      "['984', '1']\n",
      "['985', '0']\n",
      "['986', '0']\n",
      "['987', '0']\n",
      "['988', '1']\n",
      "['989', '0']\n",
      "['990', '1']\n",
      "['991', '0']\n",
      "['992', '1']\n",
      "['993', '0']\n",
      "['994', '0']\n",
      "['995', '0']\n",
      "['996', '1']\n",
      "['997', '0']\n",
      "['998', '0']\n",
      "['999', '0']\n",
      "['1000', '0']\n",
      "['1001', '0']\n",
      "['1002', '0']\n",
      "['1003', '1']\n",
      "['1004', '1']\n",
      "['1005', '1']\n",
      "['1006', '1']\n",
      "['1007', '0']\n",
      "['1008', '0']\n",
      "['1009', '1']\n",
      "['1010', '0']\n",
      "['1011', '1']\n",
      "['1012', '1']\n",
      "['1013', '0']\n",
      "['1014', '1']\n",
      "['1015', '0']\n",
      "['1016', '0']\n",
      "['1017', '1']\n",
      "['1018', '0']\n",
      "['1019', '1']\n",
      "['1020', '0']\n",
      "['1021', '0']\n",
      "['1022', '0']\n",
      "['1023', '1']\n",
      "['1024', '0']\n",
      "['1025', '0']\n",
      "['1026', '0']\n",
      "['1027', '0']\n",
      "['1028', '0']\n",
      "['1029', '0']\n",
      "['1030', '1']\n",
      "['1031', '0']\n",
      "['1032', '0']\n",
      "['1033', '1']\n",
      "['1034', '0']\n",
      "['1035', '0']\n",
      "['1036', '0']\n",
      "['1037', '0']\n",
      "['1038', '0']\n",
      "['1039', '0']\n",
      "['1040', '0']\n",
      "['1041', '0']\n",
      "['1042', '1']\n",
      "['1043', '0']\n",
      "['1044', '0']\n",
      "['1045', '1']\n",
      "['1046', '0']\n",
      "['1047', '0']\n",
      "['1048', '1']\n",
      "['1049', '1']\n",
      "['1050', '0']\n",
      "['1051', '1']\n",
      "['1052', '1']\n",
      "['1053', '1']\n",
      "['1054', '1']\n",
      "['1055', '0']\n",
      "['1056', '0']\n",
      "['1057', '1']\n",
      "['1058', '0']\n",
      "['1059', '0']\n",
      "['1060', '1']\n",
      "['1061', '1']\n",
      "['1062', '0']\n",
      "['1063', '0']\n",
      "['1064', '0']\n",
      "['1065', '0']\n",
      "['1066', '0']\n",
      "['1067', '1']\n",
      "['1068', '1']\n",
      "['1069', '0']\n",
      "['1070', '1']\n",
      "['1071', '1']\n",
      "['1072', '0']\n",
      "['1073', '1']\n",
      "['1074', '1']\n",
      "['1075', '0']\n",
      "['1076', '1']\n",
      "['1077', '0']\n",
      "['1078', '1']\n",
      "['1079', '0']\n",
      "['1080', '0']\n",
      "['1081', '0']\n",
      "['1082', '0']\n",
      "['1083', '0']\n",
      "['1084', '1']\n",
      "['1085', '0']\n",
      "['1086', '1']\n",
      "['1087', '0']\n",
      "['1088', '1']\n",
      "['1089', '1']\n",
      "['1090', '0']\n",
      "['1091', '1']\n",
      "['1092', '1']\n",
      "['1093', '1']\n",
      "['1094', '1']\n",
      "['1095', '1']\n",
      "['1096', '0']\n",
      "['1097', '0']\n",
      "['1098', '1']\n",
      "['1099', '0']\n",
      "['1100', '1']\n",
      "['1101', '0']\n",
      "['1102', '0']\n",
      "['1103', '0']\n",
      "['1104', '0']\n",
      "['1105', '1']\n",
      "['1106', '0']\n",
      "['1107', '0']\n",
      "['1108', '1']\n",
      "['1109', '0']\n",
      "['1110', '1']\n",
      "['1111', '0']\n",
      "['1112', '1']\n",
      "['1113', '0']\n",
      "['1114', '1']\n",
      "['1115', '0']\n",
      "['1116', '1']\n",
      "['1117', '1']\n",
      "['1118', '0']\n",
      "['1119', '1']\n",
      "['1120', '0']\n",
      "['1121', '0']\n",
      "['1122', '0']\n",
      "['1123', '1']\n",
      "['1124', '0']\n",
      "['1125', '0']\n",
      "['1126', '0']\n",
      "['1127', '0']\n",
      "['1128', '1']\n",
      "['1129', '0']\n",
      "['1130', '1']\n",
      "['1131', '1']\n",
      "['1132', '1']\n",
      "['1133', '1']\n",
      "['1134', '1']\n",
      "['1135', '0']\n",
      "['1136', '1']\n",
      "['1137', '1']\n",
      "['1138', '1']\n",
      "['1139', '0']\n",
      "['1140', '1']\n",
      "['1141', '1']\n",
      "['1142', '1']\n",
      "['1143', '0']\n",
      "['1144', '0']\n",
      "['1145', '0']\n",
      "['1146', '0']\n",
      "['1147', '0']\n",
      "['1148', '0']\n",
      "['1149', '0']\n",
      "['1150', '1']\n",
      "['1151', '0']\n",
      "['1152', '0']\n",
      "['1153', '0']\n",
      "['1154', '1']\n",
      "['1155', '1']\n",
      "['1156', '0']\n",
      "['1157', '0']\n",
      "['1158', '0']\n",
      "['1159', '0']\n",
      "['1160', '1']\n",
      "['1161', '0']\n",
      "['1162', '0']\n",
      "['1163', '0']\n",
      "['1164', '1']\n",
      "['1165', '1']\n",
      "['1166', '0']\n",
      "['1167', '1']\n",
      "['1168', '0']\n",
      "['1169', '0']\n",
      "['1170', '0']\n",
      "['1171', '0']\n",
      "['1172', '1']\n",
      "['1173', '1']\n",
      "['1174', '1']\n",
      "['1175', '1']\n",
      "['1176', '1']\n",
      "['1177', '0']\n",
      "['1178', '0']\n",
      "['1179', '0']\n",
      "['1180', '0']\n",
      "['1181', '0']\n",
      "['1182', '0']\n",
      "['1183', '1']\n",
      "['1184', '0']\n",
      "['1185', '1']\n",
      "['1186', '0']\n",
      "['1187', '0']\n",
      "['1188', '1']\n",
      "['1189', '0']\n",
      "['1190', '0']\n",
      "['1191', '0']\n",
      "['1192', '0']\n",
      "['1193', '0']\n",
      "['1194', '0']\n",
      "['1195', '0']\n",
      "['1196', '1']\n",
      "['1197', '1']\n",
      "['1198', '0']\n",
      "['1199', '1']\n",
      "['1200', '0']\n",
      "['1201', '1']\n",
      "['1202', '0']\n",
      "['1203', '0']\n",
      "['1204', '0']\n",
      "['1205', '1']\n",
      "['1206', '1']\n",
      "['1207', '1']\n",
      "['1208', '1']\n",
      "['1209', '0']\n",
      "['1210', '0']\n",
      "['1211', '0']\n",
      "['1212', '0']\n",
      "['1213', '0']\n",
      "['1214', '0']\n",
      "['1215', '0']\n",
      "['1216', '1']\n",
      "['1217', '0']\n",
      "['1218', '1']\n",
      "['1219', '0']\n",
      "['1220', '0']\n",
      "['1221', '0']\n",
      "['1222', '1']\n",
      "['1223', '0']\n",
      "['1224', '0']\n",
      "['1225', '1']\n",
      "['1226', '0']\n",
      "['1227', '0']\n",
      "['1228', '0']\n",
      "['1229', '0']\n",
      "['1230', '0']\n",
      "['1231', '1']\n",
      "['1232', '0']\n",
      "['1233', '0']\n",
      "['1234', '0']\n",
      "['1235', '1']\n",
      "['1236', '1']\n",
      "['1237', '1']\n",
      "['1238', '0']\n",
      "['1239', '1']\n",
      "['1240', '0']\n",
      "['1241', '1']\n",
      "['1242', '1']\n",
      "['1243', '0']\n",
      "['1244', '0']\n",
      "['1245', '0']\n",
      "['1246', '1']\n",
      "['1247', '0']\n",
      "['1248', '1']\n",
      "['1249', '0']\n",
      "['1250', '0']\n",
      "['1251', '1']\n",
      "['1252', '0']\n",
      "['1253', '1']\n",
      "['1254', '1']\n",
      "['1255', '0']\n",
      "['1256', '1']\n",
      "['1257', '0']\n",
      "['1258', '0']\n",
      "['1259', '1']\n",
      "['1260', '1']\n",
      "['1261', '0']\n",
      "['1262', '0']\n",
      "['1263', '1']\n",
      "['1264', '0']\n",
      "['1265', '0']\n",
      "['1266', '1']\n",
      "['1267', '1']\n",
      "['1268', '1']\n",
      "['1269', '0']\n",
      "['1270', '0']\n",
      "['1271', '0']\n",
      "['1272', '0']\n",
      "['1273', '0']\n",
      "['1274', '1']\n",
      "['1275', '1']\n",
      "['1276', '0']\n",
      "['1277', '1']\n",
      "['1278', '0']\n",
      "['1279', '0']\n",
      "['1280', '0']\n",
      "['1281', '0']\n",
      "['1282', '0']\n",
      "['1283', '1']\n",
      "['1284', '1']\n",
      "['1285', '0']\n",
      "['1286', '0']\n",
      "['1287', '1']\n",
      "['1288', '0']\n",
      "['1289', '1']\n",
      "['1290', '0']\n",
      "['1291', '0']\n",
      "['1292', '1']\n",
      "['1293', '0']\n",
      "['1294', '1']\n",
      "['1295', '0']\n",
      "['1296', '1']\n",
      "['1297', '0']\n",
      "['1298', '0']\n",
      "['1299', '1']\n",
      "['1300', '1']\n",
      "['1301', '1']\n",
      "['1302', '1']\n",
      "['1303', '1']\n",
      "['1304', '1']\n",
      "['1305', '0']\n",
      "['1306', '1']\n",
      "['1307', '0']\n",
      "['1308', '0']\n",
      "['1309', '1']\n"
     ]
    }
   ],
   "source": [
    "import csv\n",
    "\n",
    "with open('Titanic_prd.csv','r',encoding='utf8')as f:\n",
    "    f_csv = csv.reader(f)\n",
    "    headers = next(f_csv)\n",
    "    print(headers)\n",
    "    for row in f_csv:\n",
    "        print(row)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3bcc92d9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
